1.UnitTest的应用规则
'''
Unittest的应用规则:
1.是Python默认自带的库。不需要安装了,直接导入就可以。
2.调用时一定要通过继承UnitTest.TestCase类来实现
3.UnitTest四大组件
前后置条件:setup和teardown,分为class级和function级
不会把测试数据的初始化放到前置函数之中
一个class中只能存在class级和Function级各一套
如果考虑多用例间浏览器缓存通用的场景,使用setupclass,否则使用setup进行前置设置
测试用例:所有的测试用例都是基于test开头的函数,用例运行顺序是固定的,基于ASCII来进行排序,再执行。
0-9,A-Z.a-z的顺序,建议在编写用例的时候,进行编号排序
不加test开头的函数,都是普通的函数,需要被调用才可以生效。
unittest下支持单用例执行,但是虚竹不推荐使用,因为容易因为用例关联逻辑报错
断言:在unitTest下,只要代码没有报错,就认为是通过的。
通过self.assert*字样来进行调用
4.UnitTest要启动运行,一定是在main函数中用unittest.main()启动
5.UnitTest控制台的打印有点莫名其妙,不要太过于在意控制台的输出顺序
6.测试用例在设计的时候一定要考虑到用例间的关联性要尽可能低,让每一个用例尽可能是独立化存在的。
'''
import unittest
class UnitDemo02(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
print('这是setUpclass02')
cls.a = '虚竹'
@classmethod
def tearDownClass(cls) -> None:
print('这是teardownclass02')
def setUp(self) -> None:
print('这是前置条件')
def tearDown(self) -> None:
print('这是后置条件')
def test_01_a(self):
print('这是a')
def test_02_A(self):
pass
def test_03_1(self):
print('这是1')
class UnitDemo(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
print('这是setUpclass')
cls.a = '虚竹02'
@classmethod
def tearDownClass(cls) -> None:
print('这是teardownclass')
def test_01(self):
a = 3.1415926123456789
b = 3.141592612345678
self.assertAlmostEqual(a,b,msg = '不对')
def test_02(self):
c = 10
print('这是02')
UnitDemo.a = c
return c
def test_03(self):
print(self.a)
def func(self,a,b):
print('这是func函数')
return a + b
if __name__ == '__main__':
unittest.main()
2.UnitTest下的自动化测试实现
'''
Unittest下的自动化测试实现
一个完整的流程,不同的小流程分为不同的用例去管理。这样便于维护
'''
import unittest
from class24.web_keys import Keys
class UnitAuto(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.key = Keys('Chrome')
@classmethod
def tearDownClass(cls) -> None:
cls.key.quit()
def test_01_login(self):
self.key.open('http://39.98.138.157/shopxo/index.php?s=/index/user/logininfo.html')
self.key.input('name','accounts','sixiaoyou')
self.key.input('name','pwd','xxx')
self.key.click('xpath','//button[text()="登录"]')
self.assertEqual('退出1',self.key.get_text('link text','退出'),msg = '断言失败')
self.key.sleep(5)
if __name__ == '__main__':
unittest.main()