Is it possible/advisable to combine unit testing and integration testing?
Doing both unit testing and integration testing? Overwhelmingly yes.
Mashing them together in a single test suite? Not advisable.
Based on your comment, it seems you already understand the purpose of both, so I won't repeat that here. But I do want to address your suggestions that ...
It's something you can actually test scientifically. You don't have to rely on arguments from the Internet. Write unit tests and see if they catch errors your manual testing didn't. See if they reduce the time to find errors.
Unit testing wasn't very common in software development until the early 2000's, so anyone who has been doing this for longer than ...
A few aspects I would like to touch on.
I work in a field where lots of code is written, but hardly ever tested. This is because we are foremost scientists who try to solve problems with code
I think this is common in science. And I think it's only partly due to lack of courses or motivation.
I think the main reason is that a lot of scientific code is more ...
would you trust results of a complex software with many hundreds or
thousands of functions without a single unit test?
I would not.
But a properly written set of unit tests is only one side of it.
Unit tests should be complemented by black box end-to-end tests that cover major functionality.
would you trust the model to make predictions?
Now when you know ...
Are there other way to solve the external dependency issue?
DynamoDB is tightly coupled to Amazon. Amazon built it. Unless you can identify a higher level of abstraction, just leave your class as it is. Identifying a higher level of abstraction involves analyzing all of the consumers of InternalDataStorageClient and possibly eliminating all references to ...
you would write for each class tests in a separate file that ensure compatibility for an implementation
Don't be dogmatic about this. If you have two implementations which under all circumstances should have the same functionality, then just write one set of and run the tests twice with the different implementations.
Assuming that with "google tests" you mean tests written with the Google Test C++ testing framework, I'm pretty sure you can use it for system tests, and you can definitely use pytest for unit tests (but for Python code).
My guess is that since system tests don't need to match the language the system is written in (by definition they should access ...