相关疑难解决方法(0)

Unittest测试订单

我如何确定unittest方法的顺序?字母或数字前缀是否正确?

class TestFoo(TestCase):
    def test_1(self):
        ...
    def test_2(self):
        ...
Run Code Online (Sandbox Code Playgroud)

要么

class TestFoo(TestCase):
    def test_a(self):
        ...
    def test_b(self):
        ...
Run Code Online (Sandbox Code Playgroud)

python unit-testing

43
推荐指数
12
解决办法
5万
查看次数

在Python中改变单元测试的顺序

我怎样才能使Python(使用unittest)中的单元测试按照文件中指定的顺序运行?

python unit-testing

32
推荐指数
3
解决办法
1万
查看次数

试图实现python TestSuite

我有两个测试用例(两个不同的文件),我想在测试套件中一起运行.我可以通过"正常"运行python来运行测试但是当我选择运行python-unit测试时它会说0个测试运行.现在我只想尝试至少进行一次测试才能正确运行.

import usertest
import configtest # first test
import unittest   # second test

testSuite = unittest.TestSuite()
testResult = unittest.TestResult()
confTest = configtest.ConfigTestCase()
testSuite.addTest(configtest.suite())
test = testSuite.run(testResult)
print testResult.testsRun # prints 1 if run "normally"
Run Code Online (Sandbox Code Playgroud)

这是我的测试用例设置的一个例子

class ConfigTestCase(unittest.TestCase):
    def setUp(self):

        ##set up code

    def runTest(self):

        #runs test


def suite():
    """
        Gather all the tests from this module in a test suite.
    """
    test_suite = unittest.TestSuite()
    test_suite.addTest(unittest.makeSuite(ConfigTestCase))
    return test_suite

if __name__ == "__main__":
    #So you can run tests from this module individually. …
Run Code Online (Sandbox Code Playgroud)

python unit-testing regression-testing test-suite python-unittest

28
推荐指数
2
解决办法
3万
查看次数

python unittest中的测试顺序

我正在寻找类似的问题,我无法找到问题的答案.

我在一个派生自unittest.TestCase的python类中编写了测试

class TestEffortFormula(unittest.TestCase)
Run Code Online (Sandbox Code Playgroud)

我需要给一个为了测试(请不要告诉我,我不应该依赖测试的顺序,我只是做).

在我需要命令测试之前,我用来运行测试的命令是:

unittest.main(testRunner=TeamcityTestRunner())
Run Code Online (Sandbox Code Playgroud)

然后我想让订单消失,所以我尝试了以下内容:

loader = unittest.TestLoader()
loader.sortTestMethodsUsing(None)
loader.loadTestsFromTestCase(TestEffortFormula)
suite = loader.suiteClass()
Run Code Online (Sandbox Code Playgroud)

但从这里我不知道如何运行测试,特别是testRunner=TeamcityTestRunner() 像以前一样.

感谢您的帮助

python unittest2 python-unittest

10
推荐指数
1
解决办法
4764
查看次数

如何按照声明的顺序运行单元测试测试用例

我完全意识到单元测试的顺序应该无关紧要。但是这些单元测试与实际单元测试一样多用于教学,所以我希望测试输出与测试用例源代码相匹配。

我看到有一种方法可以通过sortTestMethodsUsing在测试加载器上设置属性来设置排序顺序。默认值是cmp()对名称进行词法比较的简单调用。因此,我尝试编写一个cmp-like 函数,该函数将采用两个名称,找到它们的声明行号并返回它们的 -cmp()等效项:

import unittest

class TestCaseB(unittest.TestCase):
    def test(self):
        print("running test case B")

class TestCaseA(unittest.TestCase):
    def test(self):
        print("running test case A")

import inspect
def get_decl_line_no(cls_name):
    cls = globals()[cls_name]
    return inspect.getsourcelines(cls)[1]

def sgn(x):
    return -1 if x < 0 else 1 if x > 0 else 0

def cmp_class_names_by_decl_order(cls_a, cls_b):
    a = get_decl_line_no(cls_a)
    b = get_decl_line_no(cls_b)
    return sgn(a - b)

unittest.defaultTestLoader.sortTestMethodsUsing = cmp_class_names_by_decl_order
unittest.main()
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到这个输出:

running test case A
.running test case …
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-unittest

7
推荐指数
1
解决办法
1859
查看次数

python unittest上的执行顺序

我需要为我的测试设置执行顺序,因为我需要在其他测试之前验证一些数据.可以订单吗?

class OneTestCase(unittest.TestCase):
    def setUp(self):
        # something to do
    def test_login (self):
        # first test
        pass
    def test_other (self):
        # any order after test_login
    def test_othermore (self):
        # any order after test_login
if __name__ == '__main__':
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

谢谢

python unit-testing

6
推荐指数
2
解决办法
8869
查看次数