Python之Unittest记录
2022/4/13 20:14:03
本文主要是介绍Python之Unittest记录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
介绍
Unittest是什么?是Python的一款单元测试框架,就是可以对程序员写的代码(类、方法、函数等)进行测试。
官方文档:请点击这里 本文基于该官方文档编写,如有错误,欢迎指出!
直接上代码,文件名:Login.py
import unittest from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By class Login(unittest.TestCase): @classmethod def setUpClass(cls): print('setUpClass执行') ser = Service('../chromedriver.exe') cls.driver = webdriver.Chrome(service=ser) def setUp(self): print('setup执行') self.driver.get('https://passport.winxuan.com/signin') def test_login_success(self): self.driver.find_element(By.CLASS_NAME,'logo_bg').click() pass @unittest.skip("showing class skipping") def test_login_error_password(self): pass def tearDown(self): print('tearDown执行') @classmethod def tearDownClass(cls): print('tearDownClass执行') def suite(): suite = unittest.TestSuite() suite.addTest(Login('test_login_success')) suite.addTest(Login('test_login_error_password')) return suite if __name__ == '__main__': runner = unittest.TextTestRunner() runner.run(suite())View Code
执行顺序:
setUpClass->
setUp->test_login_success->tearDown->
setUp->test_login_error_password->tearDown->
tearDownClass
注意:
(1)setUpClass和tearDownClass必须加注解@classmethod,表示是一个类的方法,它们在整个过程仅各执行一次,因此可以用来写初始化的代码;
(2)unittest约定,测试用例必须以test开头;
(3)setUp和tearDown在每个测试用例执行前后都会执行,因此可以用来写为用例初始化环境和清理环境的代码;
运行
1、可以运行这个Python文件,则是运行main中的代码;
另一种简便写法:
if __name__ == '__main__': unittest.main()
2、在Pycharm中可以直接Login这个类,因为它是继承了unittest;
3、在命令行,python -m unittest Login 或 python -m unittest Login.py 都是可以的,意思和上述一样;
其他的命令选项:
- -h 可以查看所有的命令行选项;python -m unittest -h
- -v, --verbose Verbose output 详细的输出 例如 python -m unittest -v test_module
- -q, --quiet Quiet output 简洁的输出
- -f, --failfast Stop on first fail or error遇到第一个失败或错误则停止
- -k Only run tests which match the given substring 运行与给定子字符串匹配的测试;python -m unittest -k password Login 则只运行test_login_error_password,不运行test_login_success。
断言
Unittest的TestCase基类提供的assert*()方法。如果测试失败,异常将被抛出,并带有解释信息,unittest将识别测试用例为失败。任何其他异常将被视为错误。
.
更多的方法移步官方文档;
子测试subTest
当测试用例之间有非常小的差异时,例如一些参数,unittest可以使用subTest()上下文管理器在测试方法体中区分它们。
class NumbersTest(unittest.TestCase): def test_even(self): """Test that numbers between 0 and 5 are all even.""" for i in range(0, 6): with self.subTest(i=i): self.assertEqual(i % 2, 0)View Code
测试套件
测试套件可以用于指定执行哪些用例,比直接执行的方法更灵活一些。代码在介绍中。
注解
@unittest.skip(reason) 无条件跳过该测试用例,reason为原因;
@unittest.skipIf(condition, reason)若condition为真,则跳过该测试用例;
Skip the decorated test if condition is true.
@unittest.skipUnless(condition, reason)跳过该用例除非condition为真,意思是condition为真则执行该用例。(这里有点绕)
@unittest.expectedFailure 这个用例希望它失败。如果它本身成功了,则被视为失败;
跳过的测试case将不会运行setUp()和tearDown()。被跳过的类将不会运行setUpClass()和tearDownClass()
这篇关于Python之Unittest记录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享