续接Unittest-单元测试的记录
六、TestCase用法
import unittest
class EcshopLogin(unittest.TestCase):
#测试用例
def test01_cs(self):
print("测试")
1.使用unittest命令行的方式运行:
python -m unittest -v ecshop_login.EschopLogin
Python -m 以脚本的方式去运行一个模块
Unittest -v --verbose意思就是更详细的输出结果
Ecshop_login.EcshopLogin 模块名.类名.方法名
-k匹配模式:
1.通配符:-k *_cs
2.字符串:-l cs
集成Jenkins的时候使用。为什么?所有命令行的方式都叫做非GUI的方式。
Postman:非GUI,newman
Jmeter:jmeter的命令
2.使用unittest.main(),以模块的方式运行
配置pycharm的环境或者使用python模块名.py
七、读懂执行的结果
. 成功
F 失败
E 错误
S 跳过
八、用例执行的顺序
按ASCII码的规则:【0-9 A-Z a-z】 A=65 a=97
九、框架底层原理
module='__main__', 测试用例用例所在的路径 __main__表示当前模块
defaultTest=None, 待测用例的名称,默认是所有
argv=None, 接受外部的参数
testRunner=None, 测试运行器,TextTestRunner
testLoader=loader.defaultTestLoader, 指定使用默认的测试用例加载器
exit=True, 是否在测试完成之后结束python程序
verbosity=1, 类似于命令行-v,0,1,2
failfast=None,
catchbreak=None,
buffer=None,
warnings=None, *,
tb_locals=False
只运行部分用例使用testsuite:
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(EcshopLogin("test01_cs01"))
suite.addTest(EcshopLogin("test01_cs02"))
unittest.main(defaultTest='suite')
# unittest.TextTestRunner().run(suite)
if __name__ == '__main__':
suite = unittest.TestSuite()
testcases = [EcshopLogin("test01_cs01"),EcshopLogin("test01_cs011")]
suite.addTests(testcases)
unittest.main(defaultTest='suite')
if __name__ == '__main__':
suite = unittest.TestSuite()
testcases = unittest.defaultTestLoader.discover(start_dir=os.getcwd(),pattern='*.py')
suite.addTests(testcases)
unittest.main(defaultTest='suite')
十、TestFixture测试夹具,或者测试固件
框架的大纲或者说是架构
import unittest
class MyUnit(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
print("setUpClass:在每个类之前执行一次。如:创建数据库,生成日志对象")
def setUp(self):
print("setUp:测试前的准备工作,如:打开浏览器,加载网页")
def tearDown(self):
print("tearDown:测试用例之后的扫尾工作,如:关闭浏览器")
@classmethod
def tearDownClass(cls) -> None:
print("tearDownClass:在每个类之后执行一次,如:关闭数据库连接,销毁日志对象")
SetUpModule 和tearDownModule可以放在方法外面执行
def setUpModule():
print("模块级的夹具开始")
def tearDownModule():
print("模块级的夹具结束")
今天的个人笔记就到这里!!!!!