软件测试肖sir__python之ui自动化测试框架unittest
最佳答案 问答题库648位专家为你答疑解惑
ui自动化测试框架unittest
一、自动化框架
1、自动化框架类型
(1)unittest框架 (python中自带框架)
(2)pytest框架 (第三方库)
(3)po框架 (分层思维)
2、自动化框架作用:管理和组织用例
二、介绍下:unittest框架
代码:
import unittest #导入自动化测试框架
class Cms(unittest.TestCase): #创建一个类,并且集成unittest.testcase cms类名@classmethod #类方法def setUpClass(cls) -> None: #类的开始print('类的开始')@classmethoddef tearDownClass(cls) -> None: #类的结束print('类的结束')def setUp(self) -> None: #方法的开始print('方法开始') #运行前准备工作,def tearDown(self) -> None:print('方法结束') #运行后的工作关闭窗口,时间等待def test1(self): #用例1print('1111')def test2(self): ##用例2print('3333')def testA(self): ##用例3print('AAAA')def testa(self):print('aaaa')def bbb(self):print('bbb')
if __name__ == '__main__': #main函数unittest.main() #调用所有的用例
类的开始
方法开始
1111
方法结束
方法开始
3333
方法结束
方法开始
AAAA
方法结束
方法开始
aaaa
方法结束
类的结束
总结:
1、类的开始,类的结束只执行一次
2、方法开始,方法结束 每一次都执行了
3、运行时顺序按照ascii码排序:0-9,A-Z,a-z
4、用例必须用test开头,如果没有test开头就不运行
二、实际项目用例编写
from selenium import webdriver
import timeimport unittest #导入自动化测试框架
class Cms(unittest.TestCase): #创建一个类,并且集成unittest.testcase cms类名@classmethod #类方法def setUpClass(cls) -> None: #类的开始print('类的开始')@classmethoddef tearDownClass(cls) -> None: #类的结束print('类的结束')def setUp(self) -> None: #方法的开始self.dx = webdriver.Chrome() # 创建一个 webdriver对象self.dx.get("https://www.baidu.com/") # 通过对象打开网址time.sleep(3) #运行前准备工作,def tearDown(self) -> None:time.sleep(3)self.dx.close()# print('方法结束') #运行后的工作关闭窗口,时间等待def test1(self): #用例1self.dx.find_element_by_id("kw").send_keys('python')def test2(self): ##用例2self.dx.find_element_by_id("kw").send_keys('html')def testA(self): ##用例3self.dx.find_element_by_id("kw").send_keys('mysql')def testa(self):self.dx.find_element_by_id("kw").send_keys('linux')def bbb(self):self.dx.find_element_by_id("kw").send_keys('我不是test')
if __name__ == '__main__': #main函数unittest.main() #调用所有的用例
三、unittest 调用方法
(1)第一种调用所有用例unittest.main()
from selenium import webdriver
import timeimport unittest #导入自动化测试框架
class Cms(unittest.TestCase): #创建一个类,并且集成unittest.testcase cms类名@classmethod #类方法def setUpClass(cls) -> None: #类的开始print('类的开始')@classmethoddef tearDownClass(cls) -> None: #类的结束print('类的结束')def setUp(self) -> None: #方法的开始self.dx = webdriver.Chrome() # 创建一个 webdriver对象self.dx.get("https://www.baidu.com/") # 通过对象打开网址time.sleep(3) #运行前准备工作,def tearDown(self) -> None:time.sleep(3)self.dx.close()# print('方法结束') #运行后的工作关闭窗口,时间等待def test1(self): #用例1self.dx.find_element_by_id("kw").send_keys('python')def test2(self): ##用例2self.dx.find_element_by_id("kw").send_keys('html')def testA(self): ##用例3self.dx.find_element_by_id("kw").send_keys('mysql')def testa(self):self.dx.find_element_by_id("kw").send_keys('linux')def bbb(self):self.dx.find_element_by_id("kw").send_keys('我不是test')
if __name__ == '__main__': #main函数unittest.main() #调用所有的用例
(2)第二种:调用部分用例
TestSuite:(套件)
对一个功能的测试往往需要多测试用例的,可以把多的测试用例集合在一起执行,这就是TestSuite的概念。常用addTest()方法将一个测试用例添加到测试套件中
TextTestRunner:
是用来执行测试用例的,其中的run(test)用来执行TestSuite/TestCase。测试的结果会保存在
运行中出现全部修改路径:
案例:
import unittest #导入自动化测试框架
class Cms(unittest.TestCase): #创建一个类,并且集成unittest.testcase@classmethoddef setUpClass(cls) -> None: #类的开始print('类的开始')@classmethoddef tearDownClass(cls) -> None: #类的结束print('类的结束')def setUp(self) -> None: #方法的开始print('方法开始')def tearDown(self) -> None:print('方法结束')def test1(self):print('1111')def test3(self):print('3333')def test2(self):print('2222')def testA(self):print('aaaa')def testa(self):print('AAAA')def bbb(self):print('bbb')
if __name__ == '__main__':# unittest.main() #调用所有的用例tj=unittest.TestSuite() #创建套件对象# tj.addTest(Cms('test2'))tj.addTests([Cms("test2"),Cms("test3")])r=unittest.TextTestRunner()r.run(tj)
(3)第三种:调用一个路径下的用例
TestLoader:
是用来搜索所有以test开头的测试用例,
import unittest #导入自动化测试框架
class Cms(unittest.TestCase): #创建一个类,并且集成unittest.testcase@classmethoddef setUpClass(cls) -> None: #类的开始print('类的开始')@classmethoddef tearDownClass(cls) -> None: #类的结束print('类的结束')def setUp(self) -> None: #方法的开始print('方法开始')def tearDown(self) -> None:print('方法结束')def test1(self):print('1111')def test3(self):print('3333')def test2(self):print('2222')def testA(self):print('aaaa')def testa(self):print('AAAA')def bbb(self):print('bbb')
if __name__ == '__main__':# unittest.main() #调用所有的用例 #第一种# tj=unittest.TestSuite() #创建套件对象 #第二种# # tj.addTest(Cms('test2'))# tj.addTests([Cms("test2"),Cms("test3")])# r=unittest.TextTestRunner()# r.run(tj)lj=r"C:\Users\Administrator\PycharmProjects\untitled38\dcs\dsc2" #路径d=unittest.TestLoader().discover(start_dir=lj,pattern="kj*")r=unittest.TextTestRunner()r.run(d)
(4)第四种:使用html报告模板生成自动化测试报告
a、下载一个报告模板:
b、跑出来报告
import unittest #导入自动化测试框架
import time
from dcs.dsc2.HTMLTestRunner3_New import HTMLTestRunner
class Cms(unittest.TestCase): #创建一个类,并且集成unittest.testcase@classmethoddef setUpClass(cls) -> None: #类的开始print('类的开始')@classmethoddef tearDownClass(cls) -> None: #类的结束print('类的结束')def setUp(self) -> None: #方法的开始print('方法开始')def tearDown(self) -> None:print('方法结束')def test1(self):print('1111')def test3(self):print('3333')def test2(self):print('2222')def testA(self):print('aaaa')def testa(self):print('AAAA')def bbb(self):print('bbb')
if __name__ == '__main__':# unittest.main() #调用所有的用例 #第一种# tj=unittest.TestSuite() #创建套件对象 #第二种# # tj.addTest(Cms('test2'))# tj.addTests([Cms("test2"),Cms("test3")])# r=unittest.TextTestRunner()# r.run(tj)# lj=r"C:\Users\Administrator\PycharmProjects\untitled38\dcs\dsc2" #路径 #第三种
# d=unittest.TestLoader().discover(start_dir=lj,pattern="kj*")
# r=unittest.TextTestRunner()
# r.run(d)lj=r"C:\Users\Administrator\PycharmProjects\untitled38\dcs\dsc2" #路径 #第三种d=unittest.TestLoader().discover(start_dir=lj,pattern="kj*")bglj=r"C:\Users\Administrator\PycharmProjects\untitled38\dcs\dsc2"new=time.strftime("%y-%m-%d-%H-%M-%S")file=bglj+"/"+str(new)+"_ui.html"f=open(file,'wb')r=HTMLTestRunner(stream=f,title="ui自动化测试报告",description="用例执行情况" ,tester="dcs35")r.run(d)
99%的人还看了
相似问题
- Kotlin学习——kt里的集合,Map的各种方法之String篇
- Office文件在线预览大全-Word文档在线预览的实现方法-OFD文档在线预览-WPS文件在线预览
- composer切换全局镜像源的方法
- Python通过selenium调用IE11浏览器报错解决方法
- 测试用例的设计方法(全):正交实验设计方法|功能图分析方法|场景设计方发
- Java8新特性 ----- Lambda表达式和方法引用/构造器引用详解
- C#中抽象类、抽象方法和接口暨内联临时变量的精彩表达
- ChatGLM2 大模型微调过程中遇到的一些坑及解决方法(更新中)
- 类方法,静态方法和实例方法的区别及应用场景
- 【链表的说明、方法---顺序表与链表的区别】
猜你感兴趣
版权申明
本文"软件测试肖sir__python之ui自动化测试框架unittest":http://eshow365.cn/6-22058-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: MySQl有哪些索引(种类)?索引特点?为什么要使用索引?
- 下一篇: 大语言模型之十八-商业思考