新手区 unittest 使用 discover 加载用例,运行结果为空

三天打渔 · 2017年12月04日 · 最后由 donly 回复于 2017年12月06日 · 3005 次阅读

我的代码如下图所示:

import unittest,os

case_path=os.path.join(os.getcwd(),"test_login")
suite=unittest.defaultTestLoader.discover(case_path,pattern="test_*.py")
print(suite)
if __name__=='__main__':
    runner=unittest.TextTestRunner()
    runner.run(suite)
    #unittest.main(defaultTest='suite',verbosity=2)

运行结果如下:

Launching unittests with arguments python -m unittest E:/Testcmmcar-2.0/src/script/login/testrunner.py in E:\Testcmmcar-2.0\src\script\login


Ran 0 tests in 0.000s

OK
<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test_login_failure.test_login_failure testMethod=test_no_authority>, <test_login_failure.test_login_failure testMethod=test_password_error>, <test_login_failure.test_login_failure testMethod=test_password_null>, <test_login_failure.test_login_failure testMethod=test_username_error>, <test_login_failure.test_login_failure testMethod=test_username_null>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test_login_success.test_login_success testMethod=test_login>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test_logout.test_logout testMethod=test_logout>]>]>]>

Process finished with exit code 0
Empty test suite.

输出 suite,不是已经证明我的测试套件中是有用例的吗!为什么运行结果显示为空呢?

共收到 8 条回复 时间 点赞

我将下面的语句注释掉

#if __name__=='__main__':

运行结果就变成这样了:

test1202没有登陆权限
test1113此用户登陆密码输入错误
test1113此用户没有输入登陆密码
test111此登录名错误
登录名为空
登陆成功测试用例,测试数据共3组
此元素存在
test1113登陆成功并退出
此元素存在
test1201登陆成功并退出
此元素存在
test1203登陆成功并退出
此元素存在
成功退出
.......
.......
----------------------------------------------------------------------
Ran 7 tests in 234.659s

OK


Ran 0 tests in 0.000s

OK

Process finished with exit code 0
Empty test suite.

还尝试了网上说的命名错误,但是并没有影响
不明白是为了什么

if name == 'test_login':
试试呢?

我去催饭 回复

不行啊

os.getcwd() 是哪里?估计设置的 path 有问题,那下面没有 test*.py 的文件

我去催饭 回复

路径输出是:E:\Testcmmcar-2.0\src\script\login\test_login

应该是没问题的

name打印出来看看是什么,就知道了。不过这里的确没有必要存在这条判断语句。

donly 回复

打出来是 test_login.testrunner
对于运行结果没得影响

三天打渔 回复

这只是一个打印语句,对结果当然没影响。。。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册