@ddt是否与py.test一起使用?

时间:2015-04-24 01:02:41

标签: python selenium pytest ddt

@ddt是否可以使用py.test,还是必须使用unittest格式? 我有一个测试,其中安装夹具在conftest.py文件中。当我运行测试时,它会因为没有运行安装夹具而出错。 E.g:

@ddt
class Test_searchProd:
  @data(['clothes': 3],['shoes': 4])
  @unpack
  def test_searchAllProduct(setup,productType):
      .....

基本上,设置夹具是打开一个特定的URL ... 我做错了什么或@ddt不适用于py.test?

1 个答案:

答案 0 :(得分:6)

Facebook documentation旨在由TestCase子类使用,因此它不适用于裸测试类。但请注意,pytest可以运行使用TestCase的{​​{1}}子类,所以如果你已经有一个基于ddt的测试套件,它应该在没有使用pytest runner的修改的情况下运行。

另请注意,pytest具有ddt,可用于替换ddt支持的许多用例。

例如,以下基于ddt的测试:

ddt

成为pytest:

@ddt
class FooTestCase(unittest.TestCase):

    @data(1, -3, 2, 0)
    def test_not_larger_than_two(self, value):
        self.assertFalse(larger_than_two(value))

    @data(annotated(2, 1), annotated(10, 5))
    def test_greater(self, value):
        a, b = value
        self.assertGreater(a, b)

如果您愿意,甚至可以完全摆脱课程:

class FooTest:

    @pytest.mark.parametrize('value', (1, -3, 2, 0))
    def test_not_larger_than_two(self, value):
        assert not larger_than_two(value)

    @pytest.mark.parametrize('a, b', [(2, 1), (10, 5)])
    def test_greater(self, a, b):
        assert a > b