【问题标题】:How to run tests in order of their appearance in test script using nose?如何使用鼻子按照它们在测试脚本中出现的顺序运行测试?
【发布时间】:2015-05-06 17:33:37
【问题描述】:

我想按照它们的编写顺序运行我的测试,而不是 unittest 默认的字母顺序。

import unittest

class test2(unittest.TestCase):

   def test1(self):
      pass

   def test0(self):
      pass

class test1(unittest.TestCase):

   def testB(self):
      pass

   def testA(self):
      pass

在本例中,我想设置unittestnosetests 以按test1、test0、testB 和testA 的顺序运行测试。当我使用带有python -m unittest -v mytestmodule 的命令行运行测试时 或者 nosetests mytestmodule.

为此我应该使用什么命令行参数?

【问题讨论】:

  • 你为什么要这样做?
  • 有些测试需要按顺序运行,否则它们将没有意义,例如注册和登录,我想先注册,然后使用新注册的凭据登录。 @阿里克
  • 当一个测试依赖于另一个测试时,这是一种不好的做法。
  • @dbliss 我已经知道编写测试的好坏习惯,我的问题是另外一回事,我需要知道答案。
  • 类是美化的哈希表。通常,他们没有订单。现在,您可以使用__prepare__() 钩子来伪造它,但要支持一些不是最佳实践的东西,这是一项非常艰巨的工作......所以AFAIK unittest 和朋友实际上并没有做所说的工作。

标签: nose pytest nosetests python-unittest python-nose


【解决方案1】:

没有这样的命令行参数。您有两种选择:

1) 重命名您的测试。在您的示例中,您所要做的就是切换test1test0 的名称。此建议已提交before

2) 使用this link的插件。

【讨论】:

    【解决方案2】:

    我使用提供的 PyTest 排序插件找到了解决方案 here.

    我使用py.test MyTestModule.py -vv进行了测试,结果如下,测试按出现顺序运行:

    MyTestModule.py::test2::test1 PASSED
    MyTestModule.py::test2::test0 PASSED
    MyTestModule.py::test1::testB PASSED
    MyTestModule.py::test1::testA FAILED
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-02
      • 1970-01-01
      • 2013-05-30
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多