Python测试治具可以运行单个测试? [英] Python test fixture to run a single test?
问题描述
我正在寻找诸如ruby rspec的focus
元数据或elixir的mix标签之类的东西来运行单个python测试.
I'm looking for something like ruby rspec's focus
metadata or elixir's mix tags to run a single python test.
# $ rspec spec
it 'runs a single test', :focus do
expect(2).to eq(2)
end
Elixir ExUnit&混合示例:
# $ mix test --only focus
@tag :focus
test "only run this test" do
assert true
end
任何python测试运行器和夹具组合是否可能/可用?通过命令行args指定嵌套的module.class.test_name
来运行单个测试在大型项目中可能变得非常冗长.
Is this possible / available with any python test runner and fixture combo? Running single tests by specifying nested module.class.test_name
via command line args can become very verbose in larger projects.
所以类似:
# $ nosetests --only focus
from tests.fixtures import focus
class TestSomething(unittest.TestCase):
@focus
def test_all_the_things(self):
self.assertEqual(1, 1)
推荐答案
Say hello to pytest mark. You can create a focus tag, assign to any test case or method and then run tests with pytest -v -m focus
command. For example:
import unittest
import pytest
class TestOne(unittest.TestCase):
def test_method1(self):
# I won't be executed with focus mark
self.assertEqual(1, 1)
@pytest.mark.focus
def test_method2(self):
# I will be executed with focus mark
self.assertEqual(1, 1)
将运行test_method2
.要在某个TestCase中运行所有方法,只需标记一个类:
will run test_method2
. To run all methods within some TestCase, you simply mark a class:
import unittest
import pytest
@pytest.mark.focus
class TestOne(unittest.TestCase):
...
您将需要在pytest.ini
中注册您的自定义标记,例如
You will need to register your custom marks in pytest.ini
like
[pytest]
markers =
focus: what is being developed right now
要查看可用标记,请运行pytest --markers
.
To see the available marks, run pytest --markers
.
这篇关于Python测试治具可以运行单个测试?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!