一. unittest测试用例编写规则
- 需要导入
unittest
包; - 测试类必须继
承unittest.TestCase
类; - 测试方法必须要以
test
开头‘;
二、简单用法
我们先看一个简单的demo
import unittest
def add(a,b):
return a+b
expected = 8
class TestAdd(unittest.TestCase):
def test_add_success(self):
self.assertTrue(expected == add(3,5))
def test_add_error(self):
self.assertEqual(7,add(2,5))
if __name__=="__main__":
unittest.main()
-
第一行是导入
unittest
这个模块 -
class这一行是定义一个测试的类,并继承
unittest.TestCase
这个类 -
接下来是定义了两个测试case名称:
test_add_success
和test_add_error
-
注意测试用例要以
test_
开头 -
然后是断言
assert
,这里的断言方法是assertEqual
-判断两个是否相等,这个断言可以是一个也可以是多个
assertTrue
断言是否为真; -
if下面的这个
unittest.main()
是运行主函数,运行后会看到测试结果(跑了两个用例耗时0.000秒,两个用例都通过):
test_unittest01.py::TestAdd::test_add_error PASSED [ 50%]
test_unittest01.py::TestAdd::test_add_success PASSED [100%]
============================== 2 passed in 0.02s ==============================
三. 前置和后置
1. setUp:
在写测试用例的时候,每次操作其实都是基于打开浏览器输入对应网址这些操作,这个就是执行用例的前置条件。
2. tearDown:
执行完用例后,为了不影响下一次用例的执行,一般有个数据还原的过程,这就是执行用例的后置条件。
使用场景:
很多人执行完用例,都不去做数据还原,以致于下一个用例执行失败;这样便于做数据还原;
比如ui自动化便于去搞开启和关闭浏览器的操作;
案例:
可以观察到每个测试用例执行前都是去执行开启浏览器的操作,用例执行后都是去关闭浏览器;
可见setup和teardown是每次用例开启和关闭都会自动去执行;
参考代码:
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
import time
import unittest
class Blog(unittest.TestCase):
#在前置条件中进行登录操作
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.get("https://blog.csdn.net/qq_34400745")
def test_title01(self):
time.sleep(2)
assert "静静" in self.driver.title
def test_title02(self):
time.sleep(2)
assert "静静" == self.driver.title
#后置条件进行关闭
def tearDown(self):
self.driver.quit()
if __name__ == "__main__":
unittest.main()