Whilst some open source projects would be too specialised and too complex, in general, are beginners welcomed into open source projects? When I say beginner I mean someone who has taken an introductory university course on programming and had a year or two of basic programming experience for scientific purposes (mainly solving problems for assignments). Basically someone who has a strong grasp of most programming concepts but may not have a huge amount of experience in code structuring, unit and integration testing, and larger projects.
The world of open source is, almost by definition, one in which groups of complete strangers come together to combine their talents and produce a unified result. There may well be some projects where all contributors know each other and have great experience, but in the main you will be judged on the quality of your contributions.
So, I think it is fair to say that beginners who submit quality contributions, who follow the project's guidelines and procedures, and who are respectful to the community of contributors would be welcomed.
After all, a lack of of experience does not necessarily equate with a lack of good or at least fresh ideas. Indeed there a number of people here on this site who, though lacking years of experience, are still active in the FLOSS community.
But the key is to follow the project's norms. If, as you say, you don't have much knowledge of structuring, or unit testing, and the project is heavily into that approach, it behooves you to study the existing code base before making a submission.
Look at the existing unit/integration tests. Learn how they are written for this project. Which test frameworks do they use? How exhaustive are they?
Look at previous pull requests similar to the one you are considering (start small with a bug fix, for example). What did it include? Just the fix? A detailed commit message? Tests to ensure the bug does not reappear (without being noticed)?
Walk in the footsteps of those who've gone before you, and you should be welcomed with open arms.
An if you run into a project where you need 20 years of experience before they'll even acknowledge your existence ... skip it and move to another project.