☰
selenium之封装和自动化
2026/10/8 6:56:23 网站建设 项目流程

=一、设计自动化例场景并封装
网站:
http://49.233.201.254:8080/cms/manage/login.do
案例1:登录场景(账号,密码,登录按钮)

from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get('http://49.233.201.254:8080/cms/manage/login.do') # 打开浏览器
dx.maximize_window() #窗口最大化
time.sleep(2) # 休眠
dx.find_element_by_id('userAccount').send_keys('admin') #账号
time.sleep(2) #休眠
dx.find_element_by_id('loginPwd').send_keys('123456') #密码
time.sleep(2)
dx.find_element_by_id('loginBtn').click() #登录按钮

案例2:场景(登录==退出)
from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get('http://49.233.201.254:8080/cms/manage/login.do') # 打开浏览器
dx.maximize_window() #窗口最大化
time.sleep(2) # 休眠
dx.find_element_by_id('userAccount').send_keys('admin') #账号
time.sleep(2) #休眠
dx.find_element_by_id('loginPwd').send_keys('123456') #密码
time.sleep(2)
dx.find_element_by_id('loginBtn').click() #登录按钮
time.sleep(2)
dx.find_element_by_xpath('/html/body/header/span[2]/a').click() #退出
案例3:登录==用户管理
from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get('http://49.233.201.254:8080/cms/manage/login.do') # 打开浏览器
dx.maximize_window() #窗口最大化
time.sleep(2) # 休眠
dx.find_element_by_id('userAccount').send_keys('admin') #账号
time.sleep(2) #休眠
dx.find_element_by_id('loginPwd').send_keys('123456') #密码
time.sleep(2)
dx.find_element_by_id('loginBtn').click() #登录按钮
time.sleep(2)
dx.find_element_by_xpath('//*[@id="menu-user"]').click() #用户管理
案例4:登录==系统管理
#用户管理==系统管理
from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get('http://49.233.201.254:8080/cms/manage/login.do') # 打开浏览器
dx.maximize_window() #窗口最大化
time.sleep(2) # 休眠
dx.find_element_by_id('userAccount').send_keys('admin') #账号
time.sleep(2) #休眠
dx.find_element_by_id('loginPwd').send_keys('123456') #密码
time.sleep(2)
dx.find_element_by_id('loginBtn').click() #登录按钮
time.sleep(2)
dx.find_element_by_xpath('//*[@id="menu-system"]').click()
案例5:登录==用户中心==用户管理
# 登录==用户中心==用户管理
from selenium import webdriver
import time
dx=webdriver.Chrome() #创建webdriver,设置浏览器
dx.get('http://49.233.201.254:8080/cms/manage/login.do') # 打开浏览器
dx.maximize_window() #窗口最大化
time.sleep(2) # 休眠
dx.find_element_by_id('userAccount').send_keys('admin') #账号
time.sleep(2) #休眠
dx.find_element_by_id('loginPwd').send_keys('123456') #密码
time.sleep(2)
dx.find_element_by_id('loginBtn').click() #登录按钮
time.sleep(2)
dx.find_element_by_xpath('//*[@id="menu-user"]').click() #用户中心
time.sleep(2)
dx.find_element_by_link_text('用户管理').click() #用户管理

二、封装起来
用一个类,写5个用例,用5个函数
案例1:
from selenium import webdriver
from time import *
class Cms(object):
def __init__(self):
pass
def dl(self):
self.dx=webdriver.Chrome()
self.dx.get("http://49.233.201.254:8080/cms/manage/login.do")
sleep(2)
self.dx.find_element_by_id('userAccount').send_keys('admin') #账号
sleep(2)
self.dx.find_element_by_id('loginPwd').send_keys('123456') #密码
sleep(2)
self.dx.find_element_by_id('loginBtn').click() #登录按钮
sleep(2)
def q(self):
self.dl()
self.dx.find_element_by_xpath('/html/body/header/span[2]/a').click() # 退出
sleep(20)
self.dx.close()
def yhzx(self):
self.dl()
self.dx.find_element_by_xpath('//*[@id="menu-user"]').click() # 用户中心
def xtgl(self):
self.dl()
self.dx.find_element_by_xpath('//*[@id="menu-system"]').click()#系统管理
sleep(20)
self.dx.close()
def yhgl(self):
self.dl()
self.dx.find_element_by_xpath('//*[@id="menu-user"]').click() #用户中心
sleep(2)
self.dx.find_element_by_link_text('用户管理').click() #用户管理
sleep(20)
self.dx.close()
if __name__ == '__main__':
dx1=Cms()
# dx1.dl()
# dx1.yhzx()
# dx1.xtgl()
dx1.q()
# dx1.yhgl()

案例2:
from selenium import webdriver
from time import *
class Cms(object):
def __init__(self):
pass
def dl(self):
self.dx=webdriver.Chrome()
self.dx.get("http://49.233.201.254:8080/cms/manage/login.do")
sleep(2)
self.dx.find_element_by_id('userAccount').send_keys('admin') #账号
sleep(2)
self.dx.find_element_by_id('loginPwd').send_keys('123456') #密码
sleep(2)
self.dx.find_element_by_id('loginBtn').click() #登录按钮
sleep(2)
def q(self):
self.dx.find_element_by_xpath('/html/body/header/span[2]/a').click() # 退出
sleep(20)
def yhzx(self):
self.dx.find_element_by_xpath('//*[@id="menu-user"]').click() # 用户中心
sleep(3)
def xtgl(self):
self.dx.find_element_by_xpath('//*[@id="menu-system"]').click()#系统管理
sleep(3)
def yhgl(self):
self.dx.find_element_by_link_text('用户管理').click() #用户管理
sleep(3)
if __name__ == '__main__':
dx1=Cms()
dx1.dl()
dx1.yhzx()
dx1.yhgl()
dx1.xtgl()
dx1.q()
二、unittest框架
(1)介绍框架
1、unittest 框架是python中自带的框架
2、作用:管理和组织测试用例
当我们写的用例越来越多,我们就要考虑用例的编写的规范和组织,以便于后期的维护
3、常见的自动化框架:po框架、pytest 框架、unittest框架(我们讲解)
4、unitest 框架自带标准的库:有如下
a、TestCase类 (测试用例)
b、TestSuite类 (测试套件)
c、TestLoader类 (测试路径)
d、TextTestRunner类 (测试运行)
e、TextTestResult类 (测试结果)
f、TestFixture类 (测试前后准备)

案例1:(执行所有测试用例)
import unittest #导入unittest 框架
class Cms_kj(unittest.TestCase): #创建一个类,继承unittest.TestCase
#类的方法
@classmethod
def setUpClass(cls) -> None:
print("类开始")
@classmethod
def tearDownClass(cls) -> None:
print("类结束")
def setUp(self) -> None:
print('方法开始')
def tearDown(self) -> None:
print('方法结束')
def test1(self):
print(1)
def testa(self):
print('a')
def test3(self):
print(3)
def testA(self):
print("A")
def dy(self):
print('独有')
if __name__ == '__main__':
unittest.main() #执行所有的用例
注意点:
(1)用例开头都是要用test开头,不用test开头就不运行
(2)运行的顺序,ascllma标准:0-9 A-Z a-z
(3)类的开始和类的结束在框架就执行一次,
(4)方法开始和方法结束每一条用来都会执行一遍
(5)执行所有带test开头的用例

案例2:(执行部分测试用例)
import unittest #导入unittest 框架
class Cms_kj(unittest.TestCase): #创建一个类,继承unittest.TestCase
#类的方法
@classmethod
def setUpClass(cls) -> None:
print("类开始")
@classmethod
def tearDownClass(cls) -> None:
print("类结束")
def setUp(self) -> None:
print('方法开始')
def tearDown(self) -> None:
print('方法结束')
def test1(self):
print(1)
def testa(self):
print('a')
def test3(self):
print(3)
def testA(self):
print("A")
def dy(self):
print('独有')
if __name__ == '__main__':
# unittest.main() #执行全部用例
tj=unittest.TestSuite() #创建一个对象来接受套件中的用例
# tj.addTest(Cms_kj('test3')) #addtest 添加用例 类名+用例名
tj.addTests([Cms_kj('test3'),Cms_kj('testA')])
unittest.TextTestRunner().run(tj) #TextTestRunner运行用例

注意点:
1、运行的是当前的模块,配置环境变量地址
找到当前py文件==copy path(复制绝对路径)==点击编辑==python==“+号”==填写绝对路径和相对路径

案例3:(执行一个路径下的测试用例)
import unittest #导入unittest 框架
class Cms_kj(unittest.TestCase): #创建一个类,继承unittest.TestCase
#类的方法
@classmethod
def setUpClass(cls) -> None:
print("类开始")
@classmethod
def tearDownClass(cls) -> None:
print("类结束")
def setUp(self) -> None:
print('方法开始')
def tearDown(self) -> None:
print('方法结束')
def test1(self):
print(1)
def testa(self):
print('a')
def test3(self):
print(3)
def testA(self):
print("A")
def dy(self):
print('独有')
if __name__ == '__main__':
# unittest.main() #执行全部用例
# tj=unittest.TestSuite() #创建一个对象来接受套件中的用例
# # tj.addTest(Cms_kj('test3')) #addtest 添加用例 类名+用例名
# tj.addTests([Cms_kj('test3'),Cms_kj('testA')])
# unittest.TextTestRunner().run(tj) #TextTestRunner运行用例
path=r'C:\Users\Administrator\PycharmProjects\untitled\ui' #定义个相对路径,存放用例的相对路径
d=unittest.TestLoader().discover(start_dir=path,pattern='ui*.py') #unittest.TestLoader()根据路径匹配执行的py文件
unittest.TextTestRunner().run(d) #TextTestRunner 运行搜索路径下的用例


案例5:(执行一个路径下的测试用例并生成报告)
报告模板:下载一个报告模板,拖拽到pycarm中

import unittest #导入unittest 框架
from time import *
from ui.HTMLTestRunnerNew import HTMLTestRunner
class Cms_kj(unittest.TestCase): #创建一个类,继承unittest.TestCase
#类的方法
@classmethod
def setUpClass(cls) -> None:
print("类开始")
@classmethod
def tearDownClass(cls) -> None:
print("类结束")
def setUp(self) -> None:
print('方法开始')
def tearDown(self) -> None:
print('方法结束')
def test1(self):
print(1)
def testa(self):
print('a')
def test3(self):
print(3)
def testA(self):
print("A")
def dy(self):
print('独有')
if __name__ == '__main__':
# unittest.main() #执行全部用例
# tj=unittest.TestSuite() #创建一个对象来接受套件中的用例
# # tj.addTest(Cms_kj('test3')) #addtest 添加用例 类名+用例名
# tj.addTests([Cms_kj('test3'),Cms_kj('testA')])
# unittest.TextTestRunner().run(tj) #TextTestRunner运行用例
# path=r'C:\Users\Administrator\PycharmProjects\untitled\ui' #定义个相对路径,存放用例的相对路径
# d=unittest.TestLoader().discover(start_dir=path,pattern='ui*.py') #unittest.TestLoader()根据路径匹配执行的py文件
# unittest.TextTestRunner().run(d) #TextTestRunner 运行搜索路径下的用例
path=r'C:\Users\Administrator\PycharmProjects\untitled\ui' #定义个相对路径,存放用例的相对路径
d=unittest.TestLoader().discover(start_dir=path,pattern='ui*.py') #
bg_path=r'C:\Users\Administrator\PycharmProjects\untitled\ui' #定义个相对路径,存放用例的相对路径
new=strftime("%y-%m-%d %H-%M-%S") #时间戳
file=bg_path+"/"+str(new)+"ui_.html" #报告的路径+生成时间+生成文档的后缀
f=open(file,"bw") #打开报告, b 二进制的方式 w写入
HTMLTestRunner(
自动化测试报告",description="用例执行情况:",
tester="dcs67"
).run(d)

写5条用例,跑出报告,结合cms写

结合实际项目编写
案例(1):执行所有的用例
import unittest
from selenium import webdriver
from time import *
class Cms(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
pass
@classmethod
def tearDownClass(cls) -> None:
pass
def setUp(self) -> None:
self.dx = webdriver.Chrome()
self.dx.get("http://49.233.201.254:8080/cms/manage/login.do")
sleep(2)
self.dx.find_element_by_id('userAccount').send_keys('admin') # 账号
sleep(2)
self.dx.find_element_by_id('loginPwd').send_keys('123456') # 密码
sleep(2)
self.dx.find_element_by_id('loginBtn').click() # 登录按钮
sleep(2)
def tearDown(self) -> None:
sleep(10)
self.dx.close()
def test1(self):
self.dx.find_element_by_xpath('//*[@id="menu-user"]').click()
def test2(self):
self.dx.find_element_by_xpath('//*[@id="menu-system"]').click()#系统管理
def testa(self):
self.dx.find_element_by_xpath('//*[@id="menu-user"]').click()
sleep(2)
self.dx.find_element_by_link_text('用户管理').click() # 用户管理
def testA(self):
self.dx.find_element_by_xpath('/html/body/header/span[2]/a').click() # 退出
def dy(self):
print("dy")
if __name__ == '__main__':
unittest.main()
案例(2):执行部分用例或指定用例(TestSuite()套件,addTests添加用例)
注意点:右键运行是运行整个框架,我们运行当前模块,设置环境变量
import unittest
from selenium import webdriver
from time import *
class Cms(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
pass
@classmethod
def tearDownClass(cls) -> None:
pass
def setUp(self) -> None:
self.dx = webdriver.Chrome()
self.dx.get("http://49.233.201.254:8080/cms/manage/login.do")
sleep(2)
self.dx.find_element_by_id('userAccount').send_keys('admin') # 账号
sleep(2)
self.dx.find_element_by_id('loginPwd').send_keys('123456') # 密码
sleep(2)
self.dx.find_element_by_id('loginBtn').click() # 登录按钮
sleep(2)
def tearDown(self) -> None:
sleep(10)
self.dx.close()
def test1(self):
self.dx.find_element_by_xpath('//*[@id="menu-user"]').click()
def test2(self):
self.dx.find_element_by_xpath('//*[@id="menu-system"]').click()#系统管理
def C(self):
self.dx.find_element_by_xpath('//*[@id="menu-user"]').click()
sleep(2)
self.dx.find_element_by_link_text('用户管理').click() # 用户管理
def testA(self):
self.dx.find_element_by_xpath('/html/body/header/span[2]/a').click() # 退出
def dy(self):
print("dy")
if __name__ == '__main__':
# unittest.main()
tj=unittest.TestSuite() #TestSuite()套件
# tj.addTest(Cms('testA')) #addTest 添加用例
tj.addTests([Cms('testA'),Cms('test1')])
unittest.TextTestRunner().run(tj) #运行用例

案例(3):执行一个路径下用例(unittest.TestLoader())
import unittest
from selenium import webdriver
from time import *
class Cms(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
pass
@classmethod
def tearDownClass(cls) -> None:
pass
def setUp(self) -> None:
self.dx = webdriver.Chrome()
self.dx.get("http://49.233.201.254:8080/cms/manage/login.do")
sleep(2)
self.dx.find_element_by_id('userAccount').send_keys('admin') # 账号
sleep(2)
self.dx.find_element_by_id('loginPwd').send_keys('123456') # 密码
sleep(2)
self.dx.find_element_by_id('loginBtn').click() # 登录按钮
sleep(2)
def tearDown(self) -> None:
sleep(10)
self.dx.close()
def test1(self):
self.dx.find_element_by_xpath('//*[@id="menu-user"]').click()
def test2(self):
self.dx.find_element_by_xpath('//*[@id="menu-system"]').click()#系统管理
def C(self):
self.dx.find_element_by_xpath('//*[@id="menu-user"]').click()
sleep(2)
self.dx.find_element_by_link_text('用户管理').click() # 用户管理
def testA(self):
self.dx.find_element_by_xpath('/html/body/header/span[2]/a').click() # 退出
def dy(self):
print("dy")
if __name__ == '__main__':
# unittest.main()
# tj=unittest.TestSuite() #TestSuite()套件
# # tj.addTest(Cms('testA')) #addTest 添加用例
# tj.addTests([Cms('testA'),Cms('test1')])
# unittest.TextTestRunner().run(tj) #运行用例
test_path=r"C:\Users\Administrator\PycharmProjects\untitled\ui"
d=unittest.TestLoader().discover(start_dir=test_path,pattern='ui6*.py')
print(d)
unittest.TextTestRunner().run(d)
案例:执行一个路径下的用例,并生成测试报告
import unittest
from selenium import webdriver
from time import *
from ui.HTMLTestRunnerNew import HTMLTestRunner
class Cms(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
pass
@classmethod
def tearDownClass(cls) -> None:
pass
def setUp(self) -> None:
self.dx = webdriver.Chrome()
self.dx.get("http://49.233.201.254:8080/cms/manage/login.do")
sleep(2)
self.dx.find_element_by_id('userAccount').send_keys('admin') # 账号
sleep(2)
self.dx.find_element_by_id('loginPwd').send_keys('123456') # 密码
sleep(2)
self.dx.find_element_by_id('loginBtn').click() # 登录按钮
sleep(2)
def tearDown(self) -> None:
sleep(10)
self.dx.close()
def test1(self):
self.dx.find_element_by_xpath('//*[@id="menu-user"]').click()
def test2(self):
self.dx.find_element_by_xpath('//*[@id="menu-system"]').click()#系统管理
def C(self):
self.dx.find_element_by_xpath('//*[@id="menu-user"]').click()
sleep(2)
self.dx.find_element_by_link_text('用户管理').click() # 用户管理
def testA(self):
self.dx.find_element_by_xpath('/html/body/header/span[2]/a').click() # 退出
def dy(self):
print("dy")
if __name__ == '__main__':
# unittest.main()
# tj=unittest.TestSuite() #TestSuite()套件
# # tj.addTest(Cms('testA')) #addTest 添加用例
# tj.addTests([Cms('testA'),Cms('test1')])
# unittest.TextTestRunner().run(tj) #运行用例
# test_path=r"C:\Users\Administrator\PycharmProjects\untitled\ui"
# d=unittest.TestLoader().discover(start_dir=test_path,pattern='ui6*.py')
# print(d)
# unittest.TextTestRunner().run(d)
test_path = r"C:\Users\Administrator\PycharmProjects\untitled\ui"
d=unittest.TestLoader().discover(start_dir=test_path,pattern='ui6*.py')
bg_path = r"C:\Users\Administrator\PycharmProjects\untitled\ui"
new=strftime('%y-%m-%d %H-%M-%S')
file=bg_path+"/"+str(new)+"ui_.html"
f=open(file,"bw")
HTMLTestRunner(
stream=f,title="自动化测试例",description="执行用例情况",
tester="dcs"
).run(d)
总结:测试用例的讲解稿:

参考

讲解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() ,在整个框架中只运行一次。为了减少代码的冗余,我们需要进行方法的定义,调用的时候直接使用这个方法名就可以了,方法的开始setUp和tearDown结束每一条用例都会执行。然后我们进行用例定义,用例要以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匹配测试路径和文件,接下来把执行结果写入我们导入的模板文件,执行之后就能看到我们路径下所有用例的执行结果。

你做过自动化吗?你怎么做的的自动化?
做过,
1、按照流程讲解;自己做项目的一个场景
2、通过自动化框架来做自动化测试

讲解4:
我们自动化通过unittest框架来进行编写自动化测试用例:
首先导入unittest 框架 import unittest ,
创建一个类编写类名,继承unittset.testcase;
写类的开始setUpClass()和类的结束tearDownClass(),类的开始和类的结束在整个自动化用例中只执行一次,开头的时候和结尾的时候运行;
写方法开始setUp和方法结束tearDown,写方法开始和方法结束在每条用例执行前后都会执行一次,我们可以将重复执行的内容编写在方法开始和方法的结束中;
接下来在编写自动化测试用例:用例要用test开头,运行的顺序按ascllma标准排序:0-9 A-Z a-z来运行,所以用例名可以写成:如test_login_1,写完用例名,在根据实际情况写自动化用例的场景,如:账号,密码通过id,name,xpath等定位元素去编写用例;可以编写多条用例,写完用例以后去运行;运行方法有三种:
第一种:unittest.main() 运行所有用例,
第二种:通过TestSuite()套件addTest添加用例,用TextTestRunner().run运行单个用例或部分用例
第三种:通过TestLoader()去执行一个路径下的用例,用TextTestRunner().run去运行一个路径下的用例
我们运行的过程也可以导入html报告模板来生成自动化用例报告:导入一个html报告模板,定义好报告生成的路径,如:路径+时间+后缀.html ,通过open打开报告,通过二进制的方式bw写入内容,运行报告模板,填写报告模板的详情:stream运行内容,title自动化用例的标题,description"执行用例情况",
tester测试人员等,填写后run运行,运行就会生成一个ui自动化测试报告,查看自动化用例报告的结果。这就是我做的自动化。

新的报告模板:
1、dos命令下载
pip install unittestreport
2、运行代码
import unittest
import time
from selenium import webdriver
from unittestreport import TestRunner #
class Cms_zdh(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
pass
@classmethod
def tearDownClass(cls) -> None:
pass
def setUp(self) -> None: #执行前的操作
self.dx=webdriver.Chrome()
self.dx.get("http://49.233.201.254:8080/cms/manage/login.do")
self.dx.implicitly_wait(3)
self.dx.find_element_by_id('userAccount').send_keys('admin')
time.sleep(2)
self.dx.find_element_by_id('loginPwd').send_keys('123456')
time.sleep(2)
self.dx.find_element_by_id('loginBtn').click()
def tearDown(self) -> None: #执行后的操作
time.sleep(10)
self.dx.close()
def test1_yhzx(self):
self.dx.find_element_by_xpath('//*[@id="menu-user"]/dt/i').click()
def test2_xtgl(self):
self.dx.find_element_by_xpath('//*[@id="menu-system"]/dt/i').click()
def testA_tc(self):
self.dx.find_element_by_xpath('/html/body/header/span[2]/a').click()
if __name__ == '__main__':
# unittest.main
# tj=unittest.TestSuite()
# # tj.addTest(Cms_zdh('test2_xtgl'))
# # unittest.TextTestRunner().run(tj)
# lj=r"C:\Users\Administrator\PycharmProjects\untitled\ui"
# d=unittest.TestLoader().discover(start_dir=lj,pattern="zdh3*.py")
# unittest.TextTestRunner().run(d)
lj=r"C:\Users\Administrator\PycharmProjects\untitled\ui"
d=unittest.TestLoader().discover(start_dir=lj,pattern="zdh3*.py")
bglj = r"C:\Users\Administrator\PycharmProjects\untitled\ui"
new=time.strftime("%y-%m-%d %H-%M-%S")
bg=bglj+"/"+str(new)+"ui.html"
f=open(bg,"bw")
TestRunner(d,
filename=bg,
title='标题',
tester='测试员',
desc="cms项目测试生成的报告",
templates=1
).run()

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询