Python测试治具可以运行单个测试? [英] Python test fixture to run a single test?

查看:100
本文介绍了Python测试治具可以运行单个测试?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找诸如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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆