day:27 unittest实战梳理

news/2025/3/23 0:46:20/文章来源:https://www.cnblogs.com/junting/p/18785701

一.将cms写入到unittest框架中

1.main调用所有用例

import  unittest
from  selenium import   webdriver
from  time  import  *
class   Cms(unittest.TestCase):@classmethoddef  setUpClass(cls) -> None:pass@classmethoddef  tearDownClass(cls) -> None:passdef  setUp(self) -> None: #方法开始,方法开始,每一条用力执行都执行一次self.dx=webdriver.Chrome()self.dx.get("http://49.233.201.254:8080/cms/manage/login.do")self.dx.maximize_window()self.dx.find_element_by_id("userAccount").send_keys("admin")self.dx.find_element_by_id("loginPwd").send_keys("123456")sleep(2)# 点击登录self.dx.find_element_by_id('loginBtn').click()def  tearDown(self) -> None: #每一次执行用例后执行语句sleep(5)self.dx.quit()def  test2_yh(self): #用户管理self.dx.find_element_by_xpath('//*[@id="menu-user"]/dt/i').click()def  test1_xtgl(self):#系统管理self.dx.find_element_by_xpath('//*[@id="menu-system"]/dt/i').click()def  testa_tq(self): #tusleep(2)self.dx.find_element_by_xpath("/html/body/header/span[2]/a/i").click()
if __name__ == '__main__':unittest.main()

2.执行部分用例

单词:

TestSuite() 测试套件
addTest 添加单个用例
addTests() 添加多个用例

 

import  unittest
from  selenium import   webdriver
from  time  import  *
class   Cms(unittest.TestCase):@classmethoddef  setUpClass(cls) -> None:pass@classmethoddef  tearDownClass(cls) -> None:passdef  setUp(self) -> None: #方法开始,方法开始,每一条用力执行都执行一次self.dx=webdriver.Chrome()self.dx.get("http://49.233.201.254:8080/cms/manage/login.do")self.dx.maximize_window()self.dx.find_element_by_id("userAccount").send_keys("admin")self.dx.find_element_by_id("loginPwd").send_keys("123456")sleep(2)# 点击登录self.dx.find_element_by_id('loginBtn').click()def  tearDown(self) -> None: #每一次执行用例后执行语句sleep(5)self.dx.quit()def  test2_yh(self): #用户管理self.dx.find_element_by_xpath('//*[@id="menu-user"]/dt/i').click()sleep(2)def  test1_xtgl(self):#系统管理self.dx.find_element_by_xpath('//*[@id="menu-system"]/dt/i').click()def  testa_tq(self): #tusleep(2)self.dx.find_element_by_xpath("/html/body/header/span[2]/a/i").click()
if __name__ == '__main__':# unittest.main()tj=unittest.TestSuite()# tj.addTest(Cms("test2_yh"))tj.addTests([Cms("test2_yh"),Cms("test1_xtgl")])unittest.TextTestRunner().run(tj)

3.执行一个路径下的用例

unittest.TestLoader()测试路径
unittest.TextTestRunner()运行用例

import  unittest
from  selenium import   webdriver
from  time  import  *
class   Cms(unittest.TestCase):@classmethoddef  setUpClass(cls) -> None:pass@classmethoddef  tearDownClass(cls) -> None:passdef  setUp(self) -> None: #方法开始,方法开始,每一条用力执行都执行一次self.dx=webdriver.Chrome()self.dx.get("http://49.233.201.254:8080/cms/manage/login.do")self.dx.maximize_window()self.dx.find_element_by_id("userAccount").send_keys("admin")self.dx.find_element_by_id("loginPwd").send_keys("123456")sleep(2)# 点击登录self.dx.find_element_by_id('loginBtn').click()def  tearDown(self) -> None: #每一次执行用例后执行语句sleep(5)self.dx.quit()def  test2_yh(self): #用户管理self.dx.find_element_by_xpath('//*[@id="menu-user"]/dt/i').click()sleep(2)def  test1_xtgl(self):#系统管理self.dx.find_element_by_xpath('//*[@id="menu-system"]/dt/i').click()def  testa_tq(self): #tusleep(2)self.dx.find_element_by_xpath("/html/body/header/span[2]/a/i").click()
if __name__ == '__main__':# unittest.main()# tj=unittest.TestSuite()# tj.addTest(Cms("test2_yh"))# tj.addTests([Cms("test2_yh"),Cms("test1_xtgl")])# unittest.TextTestRunner().run(tj)path=r"C:\Users\Administrator.USER-20231114RR\PycharmProjects\untitled12\dd"d=unittest.TestLoader().discover(start_dir=path,pattern="kj3*.py")unittest.TextTestRunner().run(d)

4.生成自动化测试报告

import  unittest
from  selenium import   webdriver
from  time  import  *
from dd.HTMLTestRunnerNew import  HTMLTestRunner
class   Cms(unittest.TestCase):@classmethoddef  setUpClass(cls) -> None:pass@classmethoddef  tearDownClass(cls) -> None:passdef  setUp(self) -> None: #方法开始,方法开始,每一条用力执行都执行一次self.dx=webdriver.Chrome()self.dx.get("http://49.233.201.254:8080/cms/manage/login.do")self.dx.maximize_window()self.dx.find_element_by_id("userAccount").send_keys("admin")self.dx.find_element_by_id("loginPwd").send_keys("123456")sleep(2)# 点击登录self.dx.find_element_by_id('loginBtn').click()def  tearDown(self) -> None: #每一次执行用例后执行语句sleep(5)self.dx.quit()def  test2_yh(self): #用户管理self.dx.find_element_by_xpath('//*[@id="menu-user"]/dt/i').click()sleep(2)def  test1_xtgl(self):#系统管理self.dx.find_element_by_xpath('//*[@id="menu-system"]/dt/i').click()def  testa_tq(self): #tusleep(2)self.dx.find_element_by_xpath("/html/body/header/span[2]/a/i").click()
if __name__ == '__main__':# unittest.main()# tj=unittest.TestSuite()# tj.addTest(Cms("test2_yh"))# tj.addTests([Cms("test2_yh"),Cms("test1_xtgl")])# unittest.TextTestRunner().run(tj)bgpath=r"C:\Users\Administrator.USER-20231114RR\PycharmProjects\untitled12\dd"path=r"C:\Users\Administrator.USER-20231114RR\PycharmProjects\untitled12\dd"d=unittest.TestLoader().discover(start_dir=path,pattern="kj3*.py")new=strftime("%y-%m-%d %H-%M-%S")file=bgpath+"/"+str(new)+"uizdh.html"f=open(file,"bw")HTMLTestRunner(stream=f,description="用例执行情况",title="自动化测试用例",tester="dcs").run(d)

 

5.框架要自己编写,梳理出成

讲解1:

流程:

我们要建立这个框架,首先需要导入unittest这个模块,我们做自动化的话还需要导入selenium这个模块,以及一些相关的,比方说time模块,OS模块,HTMLTestRunner模块。把我们需要的模块都导入,在unittest里我们需要去定义一个类,定义类名,继承testcase,一个testcase的实例就是一个用例,类里需要有类的开始:setupclass,以及类的结束:teardownclass,然后我们需要去定义我们的用例,test1,test2,注意一定要以test开头,因为TestLoader只搜索所有以test开头的测试用例。

写完用例以后,我们需要去调用它,我们以main作为unittest的入口,执行自动化我们主要有4种调用的方式

第一种用unittest.main()去运行所有用例

第二种是创建一个套件TestSuite(),然后用addtest去添加你要执行的用例,这种方法可以执行部分测试用例,不会全部行

第三种就是搜索绝对路径去执行自动化,调用unittest.testloader.discover方法执行用例

第四种是生成测试报告,搜索绝对路径去执行自动化,调用unittest.testloader.discover方法执行用例,然后把执行结果写入我们导入的模板文件,执行之后就能看到我们路径下所有用例的执行结果。

以上就是unittest框架的整个基本流程

 

讲解2:

 

建立unittest框架流程:

第一步先导入unittest模块:import unittest;然后导入selenium模块:from selenium import webdriver、时间模块:from time import*等。第二步定义一个类,给这个类取一个类名,继承unittest.testcase,一个testcase就是一个用例,之后定义一个类方法,类方法要有类的开始(setUpClass)和类的结束(tearDownClass)。第三步进行方法的开始(setUp),每一条用例执行,他们都去执行,之后是方法的结束(tearDown)。第四步写用例,用例一定要用test开头=》test1、test2,没有以test开头的用例 ,不被运行。第五步调用函数,使用main方法(if __name__=='__main__':)进行主函数调用。第六步执行用例,第一种可以用unittest.main()运行所有用例;第二种可以创建一个套件TestSuite(),然后用addtest去添加你要执行的用例,这种方法可以执行部分测试用例,不会全部执行;第三种搜索绝对路径去执行自动化,调用unittest.testloader.discover方法执行用例;第四种生成测试报告,搜索绝对路径去执行自动化,调用unittest.testloader.discover方法执行用例,然后把执行结果写入我们导入的模板文件,执行之后就能看到我们路径下所有用例的执行结果。

讲解3:

 下面我介绍一下自动化框架的基本流程:自动化框架是用来管理和组织测试用例的,首先我们先导入unittest框架,再导入本次测试应用到的一些模块,比如time模块(进行计时)等等。接下来我们进行类的定义,创建一个类,一个testcase就是一个用例,继承unittest.testcase,定义类需要类的开始setUpClass()和类的结束tearDownClass() ,在整个框架中只运行一次。为了减少代码的冗余,我们需要进行方法的定义,调用的时候直接使用这个方法名就可以了,方法的开始和结束每一条用例都会执行。然后我们进行用例定义,用例要以test开头,如果没有以test开头就不能运行,运行顺序按ascllma标准排序:0-9  A-Z  a-z。

用例编写完成之后,我们进行用例的调用,这里我们有四种方法:

1.unittest.main() #第一种执行方法,执行所有的用例

2.创建一个套件TestSuite(),通过addtest添加用例到套件中,通过TextTestRunner去运行套件中的用例

3.根据运行文件的相对路径执行自动化测试,通过unittest.TestLoader().discover匹配测试路径和文件, unittest.TextTestRunner().run(d) 运行路径d下的用例

4.根据运行文件的相对路径执行自动化测试,通过unittest.TestLoader().discover匹配测试路径和文件,接下来把执行结果写入我们导入的模板文件,执行之后就能看到我们路径下所有用例的执行结果。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/902603.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis问题 - Redis-cli.exe无法连接

Redis-cli.exe无法连接解决:打开redis-sever.exe 再回到redis-cli正常

超时

1接口超时2异常

openGl2

图元装配(Primitive Assembly) Primitive 也就是对顶点坐标,进行装配,形成形状 裁剪 原文:片段着色器运行之前会执行裁切(Clipping)。裁切会丢弃超出你的视图以外的所有像素,用来提升执行效率 裁剪默认在片段着色前 最后一个阶段 在着色后,是Alpha测试和混合。会进行深度…

Mac安装php8.3配置Swoole环境

1、查看可安装的PHP版本brew search php 2、安装8.3的版本brew install php@8.3 3、设置环境变量vim ~/.zshrc放入上述第二步完成后提示的内容export PATH="/opt/homebrew/opt/php@8.3/bin:$PATH"export PATH="/opt/homebrew/opt/php@8.3/sbin:$PATH" e…

buuctf re rsa

先下载文件,然后打开压缩包有这样的文件,enc为二进制文件,key丢入文档读取文件就可以读取。得到n和e,然后取尝试分解n。分解成功,得到p和q,然后进行rsa解密算法的设计,因为enc为二进制文件,所以需要用open函数读取,然后使用rsa库文件进行解密。解出flag是flag{decrypt…

中高通量基因测序芯片有何不同-基因测序-测序芯片-flowcell-代加工-外协加工-委外加工-激光代加工-河南郑州-芯晨微纳(河南)

中高通量基因测序芯片的区别主要体现在样本处理能力、应用场景、技术设计以及数据产出效率等方面。以下是两者的详细对比: 中通两芯片外观:高通量芯片外观:定义与核心目标中通量基因测序芯片目标:适合中等规模样本的测序需求(例如数百至数千个样本/反应),平衡通量与成本…

ui自动化测试——unittest框架(自动化框架)

一、自动化框架介绍 1、unittest 框架是python中自带的框架 2、作用:管理和组织测试用例 当我们写的用例越来越多,我们就要考虑用例的编写的规范和组织,以便于后期的维护 3、常见的自动化框架:po框架、pytest 框架、unittest框架(我们讲解) 4、unitest 框架自带标准的库:…

代码采纳率从 22% 到 33%,通义灵码辅助数据库智能编码实践

通义灵码本质上是一个AI agent,它已经进行了大量的优化。然而,为了更完美或有效地调用模型的潜在能力,我们在使用时仍需掌握一些技巧。通常,大多数人在使用通义灵码时会直接上手,这是 AI agent 的一个优势,即 zero shot 使用,无需任何上下文即可直接使用通义灵码的能力。…

信创麒麟V10操作系统安装Kong网关

总览 随着国家对信息安全和自主可控技术的日益重视,信创改造正成为各大企业及政府部门的重要任务。公司目前在x86架构的Red Hat系统上部署了Kong网关2.2.1,并且通过官方RPM包实现了快速部署。为了顺应信创转型,现阶段需要在aarch64架构的信创麒麟v10系统上部署Kong网关。 由…

wsl kali 系统安装gvm (openVAS)

1. 更新系统 首先,确保系统是最新的: sudo apt update sudo apt upgrade -y2. 安装GVM(OpenVAS) Kali Linux官方仓库中已经包含了GVM(OpenVAS)的安装包。你可以通过以下命令安装: sudo apt install gvm3. 初始化GVM 安装完成后,需要初始化GVM。运行以下命令: sudo gvm…

day34 rsync备份任务的实战

06-备份任务实战 今天的任务主要以实际备份任务入手,完成综合练习,完成对rsync的综合运用。先看需求 再讲解 再次动手实践客户端需求 客户端需求: 1.客户端每天凌晨1点在服务器本地打包备份(/etc目录和/var/log目录) 2.客户端备份的数据必须存放至以 "主机名_ip地址_当…

dotnet-cnblogs-tool-cnblog

1. 解决的问题: 在本地编辑 md 后,如果有图像,直接复制该 md 到 博客园,或者使用 vscode 插件,会自动上传到博客园,但是上传后,因为没有真正上传图片,图片会无法显示。 2. 解决方法: 参考: dotnet-cnblogs-tool 本文环境为 linux 环境。直接下载 dotnet-cnblogs-tool…