Test case execution order in pytest

匿名 (未验证) 提交于 2019-12-03 03:04:01

问题:

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


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!