I would like to test the features of an embedded device. To simplify I can say it is an humanoid robot remotely controlled by a PC through a C/C++ API.
I am very interested to use nosetests
because of its non-boilerplate approach. However, my case is a bit more complicated. The actual test is running on a C# program and takes about 24h to complete. By switching to Python, I might save a lot of time developing new tests. But, before doing this, I am looking for some answers.
The first problem of the ancient test suite is that all tests are executing in a predefined order and if any error occur, the whole test stops. I would like to build independent test suites that does not depend on other tests results. For example, the test related to the arm of the robot has no relation with the one of the legs. However, the walk test needs both to be successful.
At night all test-suites are executed. If one fail, the next is executed and so on. The advantage is that on the Monday Morning when you come back to work, you can have more useful results than if the whole tests had already failed on Friday night 10 minutes after you left.
So am I looking for a test framework that allows:
- Splitting the tests in test-suites.
- Giving a try to each each test-suite no matter if a previous one failed.
- Giving information about dependencies on some tests.
I looked at Proboscis that allows dependencies fixtures, but the project look dead.
I am wondering how much work would it take to customize nose in order to get these features. Perhaps it worth also trying another test framework. I don't know and I need some clues...
So, in order to keep things as simple as possible, here's how I see my tests:
#!/usr/bin/python
def testArms():
...
pass
def testLegs():
...
pass
@depend(testArms, testLegs)
def testWalk():
...
pass
test_suite1 = [testLegs, testArms, testWalk]
...