I am using pytest. I have two files in a directory. In one of the files there is a long running test case that generates some output. In the other file there is a test case that reads that output. How can I ensure the proper execution order of the two test cases? Is there any alternative other than puting the test cases in the same file in the proper order?
问题:
回答1:
In general you can configure the behavior of basically any part of pytest using its well-specified hooks.
In your case, you want the "pytest_collection_modifyitems" hook, which lets you re-order collected tests in place.
That said, it does seem like ordering your tests should be easier -- this is Python after all! So I wrote a plugin for ordering tests. Check out the docs or install it from pypi. Right now I recommend using @pytest.mark.first and @pytest.mark.second, or one of the @pytest.mark.order# markers, but I have some ideas about more useful APIs. Suggestions welcome :)
回答2:
There's also a plugin pytest-ordering that seems to meet your requirements.
回答3:
Maybe you can consider using dependency pytest plugin, where you can set the test dependencies easily:
@pytest.mark.dependency() def test_long(): pass @pytest.mark.dependency(depends=['test_long']) def test_short(): pass
This way test_short
will only execute if test_long
is success and force the execution sequence as well.
回答4:
Try this:
@pytest.fixture(xxx) def test_A(): pass yield pass @pytest.mark.usefixtures('test_A') def test_B(): pass
回答5:
It looks like pytest runs tests in alphabetical order. So you can try this way:
def test_a_first_test(): pass def test_b_second_test(): pass def test_o_middle_test(): pass