当前位置:网站首页>UnitTest框架应用
UnitTest框架应用
2022-07-25 17:58:00 【司小幽】
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):
# 前置条件:可以理解为是class在执行之初,先执行的初始化行为(类级别),只执行一次
@classmethod
def setUpClass(cls) -> None:
print('这是setUpclass02')
cls.a = '虚竹'
# 后置条件:可以理解为是每一个class在执行结束时,最后执行的收尾(类级别) 只执行一次
@classmethod
def tearDownClass(cls) -> None:
print('这是teardownclass02')
# 前置条件:可以理解为是每一个测试用例在执行前的初始化行为。(用例级别)
def setUp(self) -> None:
print('这是前置条件')
# a = '虚竹'
# 后置条件:可以理解为是每一个用例在执行结束之后的收尾(用例级别)
def tearDown(self) -> None:
print('这是后置条件')
# 测试用例1
def test_01_a(self):
print('这是a')
# print(self.a)
# 修改cls.a的值:类名
# 类名.属性修改,可以修改元素的值,对全局生效
# UnitDemo.a = '钟灵'
# self.属性修改,可以在函数内修改,对全局无效
# self.a = '钟灵'
# print(self.a)
# 测试用例2
def test_02_A(self):
# print('这是A')
# print(self.a)
pass
# 测试用例3
def test_03_1(self):
print('这是1')
# 这个是第二个class对象
class UnitDemo(unittest.TestCase):
# 前置条件:可以理解为是class在执行之初,先执行的初始化行为(类级别),只执行一次
@classmethod
def setUpClass(cls) -> None:
print('这是setUpclass')
cls.a = '虚竹02'
# 后置条件:可以理解为是每一个class在执行结束时,最后执行的收尾(类级别) 只执行一次
@classmethod
def tearDownClass(cls) -> None:
print('这是teardownclass')
def test_01(self):
# print('这是unitDemo的测试用例')
# print(self.a)
a = 3.1415926123456789
b = 3.141592612345678
self.assertAlmostEqual(a,b,msg = '不对')
# self.assertEqual(a,b,msg='不对')
def test_02(self):
# c = self.func(1,2)
# print(c)
c = 10
print('这是02')
UnitDemo.a = c
return c
def test_03(self):
# print(self.test_02())
print(self.a)
# 如果不用test开头,则为普通函数
def func(self,a,b):
print('这是func函数')
return a + b
# unittest启动
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')
# def setUp(self) -> None:
# self.key = Keys('Chrome')
#
# def tearDown(self) -> None:
# self.key.quit()
@classmethod
def tearDownClass(cls) -> None:
cls.key.quit()
def test_01_login(self):
# key = Keys('Chrome')
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() 类似于 assert a == b,msg
# self.assertTrue(self.key.assert_text('link text','退出','退出1'),msg = '断言失败')
self.assertEqual('退出1',self.key.get_text('link text','退出'),msg = '断言失败')
self.key.sleep(5)
# key.quit()
# def test_02_search(self):
# key = Keys('Chrome')
# self.key.open('http://39.98.138.157/shopxo/index.php')
# self.key.input('id','search-input','手机')
# self.key.click('id','ai-topsearch')
# self.key.sleep(5)
# key.quit()
if __name__ == '__main__':
unittest.main()
边栏推荐
- OSPF --- open shortest priority path protocol
- Postman快速上手
- Oracle使用impdp导入报错:ORA-39001: 参数值无效 ORA-39000: 转储文件说明错误 ORA-39088: 文件名不能包含路径说明
- Unity 贝塞尔曲线的创建
- The new version of 3dcat v2.1.3 has been released. You can't miss these three function updates!
- 云VR:虚拟现实专业化的下一步
- new与malloc
- Joseph Ring problem
- 喜讯!瑞云科技被授予“海上扬帆”5G融合应用专委会成员单位
- What is the relationship between cloud fluidization and cloud desktop
猜你喜欢

「数字安全」警惕 NFT的七大骗局

What is the relationship between cloud fluidization and cloud desktop

11. Camera and lens

实时云渲染有哪些优势

Idea integrates common functions of SVN code management

Why the future of digitalization depends on 3D real-time rendering

What is an IP SSL certificate and how to apply for it?

CH582 BLE 5.0 使用 LE Coded 广播和连接

云VR:虚拟现实专业化的下一步

2022/7/23
随机推荐
Mock service Moco series (II) - JSON format, file file, header, cookie, solving Chinese garbled code
Hit the test site directly: summary of common agile knowledge points in PMP examination
Notes on Flickr's dataset
HCIP第一天实验
Memory and packet buffer management of LwIP
Basic operation of bidirectional linked list
Go channel simple notes
Go language context control function execution timeout return
11. Camera and lens
越来越成熟的Rust,都应用了哪些场景呢?
IDEA集成SVN代码管理常用功能
云VR:虚拟现实专业化的下一步
go语言context控制函数执行超时返回
Landmark buildings around the world
实时黄金交易平台哪个可靠安全?
Redis源码与设计剖析 -- 15.RDB持久化机制
"Deprecated gradle features were used in this build, making it incompatible with gradle 6.0" problem solving
Hcip first day experiment
Product life cycle to be considered in making intelligent hardware
绘制pdf表格 (一) 通过itext实现在pdf中绘制excel表格样式并且实现下载(支持中文字体)