unitest的实战讲解,举例子
1、类的开始和类的结束,没有用到可以不写或用pass占位

2、方法开始和方法结束;每一条用例都会执行一次

3、tearDown
本身自带关闭浏览器
二、案例
(1)运行所有的用例 unittest.main()
import unittest #python中自带的一个自动化框架的库
import time #导入time模块
from selenium import webdriver
from unittestreport import TestRunner
class Cms(unittest.TestCase): # 创建一个类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")
self.dx.find_element_by_id("userAccount").send_keys("admin")
self.dx.find_element_by_id("loginPwd").send_keys("123456")
self.dx.find_element_by_id("loginBtn").click()
self.dx.implicitly_wait(3)
def tearDown(self) -> None: #方法的结束
time.sleep(10)
self.dx.close()
def test_1(self): #用例都要test命名开头,不是以test不会运行
self.dx.find_element_by_class_name("icon-user").click() #用户中心
def test_3(self): #运行顺序:0-9 A-Z a-z
self.dx.find_element_by_class_name("icon-user").click() #用户中心
time.sleep(1)
self.dx.find_element_by_link_text("用户管理").click() #用户管理
def test_a(self):
self.dx.find_element_by_class_name("icon-user").click()
time.sleep(1)
self.dx.find_element_by_link_text("用户管理").click()
time.sleep(1)
user = self.dx.find_element_by_name("/cms/manage/user-list.html")
self.dx.switch_to.frame(user)
self.dx.find_element_by_class_name("btn-primary").click()
time.sleep(1)
addUser = self.dx.find_element_by_id("xubox_iframe1")
self.dx.switch_to.frame(addUser)
def test_2(self):
self.dx.find_element_by_class_name("icon-cogs").click()
time.sleep(1)
self.dx.find_element_by_link_text("栏目设置").click()
def sy(self): #私有
print(" 私有,不会被运行")
if name == 'main':
unittest.main() #执行所有的用例
(2)执行单个用例,或指定的多个用例TestSuite()
案例;
import unittest #python中自带的一个自动化框架的库
import time #导入time模块
from selenium import webdriver
from unittestreport import TestRunner
class Cms(unittest.TestCase): # 创建一个类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")
self.dx.find_element_by_id("userAccount").send_keys("admin")
self.dx.find_element_by_id("loginPwd").send_keys("123456")
self.dx.find_element_by_id("loginBtn").click()
self.dx.implicitly_wait(3)
def tearDown(self) -> None: #方法的结束
time.sleep(10)
self.dx.close()
def test_1(self): #用例都要test命名开头,不是以test不会运行
self.dx.find_element_by_class_name("icon-user").click() #用户中心
def test_3(self): #运行顺序:0-9 A-Z a-z
self.dx.find_element_by_class_name("icon-user").click() #用户中心
time.sleep(1)
self.dx.find_element_by_link_text("用户管理").click() #用户管理
def test_a(self):
self.dx.find_element_by_class_name("icon-user").click()
time.sleep(1)
self.dx.find_element_by_link_text("用户管理").click()
time.sleep(1)
user = self.dx.find_element_by_name("/cms/manage/user-list.html")
self.dx.switch_to.frame(user)
self.dx.find_element_by_class_name("btn-primary").click()
def test_2(self):
self.dx.find_element_by_class_name("icon-cogs").click()
time.sleep(1)
self.dx.find_element_by_link_text("栏目设置").click()
def sy(self): #私有
print(" 私有,不会被运行")
if name == 'main':
unittest.main() #执行所有的用例 第一种
tj=unittest.TestSuite() # 创建一个nittest.TestSuite套件的对象 第二种
# tj.addTest(Cms('test_a')) # 通过addtest 添加执行的一条用例
tj.addTests([Cms('test_a'),Cms('test_2')]) #添加2条及2条以上的用例
unittest.TextTestRunner().run(tj) #unittest.TextTestRunner运行,run(套件)
(3) 执行一个路径下的路径TestLoader()
import unittest #python中自带的一个自动化框架的库
import time #导入time模块
from selenium import webdriver
from unittestreport import TestRunner
class Cms(unittest.TestCase): # 创建一个类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")
self.dx.find_element_by_id("userAccount").send_keys("admin")
self.dx.find_element_by_id("loginPwd").send_keys("123456")
self.dx.find_element_by_id("loginBtn").click()
self.dx.implicitly_wait(3)
def tearDown(self) -> None: #方法的结束
time.sleep(10)
self.dx.close()
def test_1(self): #用例都要test命名开头,不是以test不会运行
self.dx.find_element_by_class_name("icon-user").click() #用户中心
def test_3(self): #运行顺序:0-9 A-Z a-z
self.dx.find_element_by_class_name("icon-user").click() #用户中心
time.sleep(1)
self.dx.find_element_by_link_text("用户管理").click() #用户管理
def test_a(self):
self.dx.find_element_by_class_name("icon-user").click()
time.sleep(1)
self.dx.find_element_by_link_text("用户管理").click()
time.sleep(1)
user = self.dx.find_element_by_name("/cms/manage/user-list.html")
self.dx.switch_to.frame(user)
self.dx.find_element_by_class_name("btn-primary").click()
def test_2(self):
self.dx.find_element_by_class_name("icon-cogs").click()
time.sleep(1)
self.dx.find_element_by_link_text("栏目设置").click()
def sy(self): #私有
print(" 私有,不会被运行")
if name == 'main':
url = r"C:\Users\Administrator\PycharmProjects\untitled2\dcs" # 相对路径第三种
d = unittest.TestLoader().discover(start_dir=url, pattern="ss1*.py")#搜索用例
unittest.TextTestRunner().run(d) #运行用例
第四种:通过报告执行(在执行一个路径下用例)

案例:
import unittest #python中自带的一个自动化框架的库
import time #导入time模块
from selenium import webdriver
from unittestreport import TestRunner
class Cms(unittest.TestCase): # 创建一个类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")
self.dx.find_element_by_id("userAccount").send_keys("admin")
self.dx.find_element_by_id("loginPwd").send_keys("123456")
self.dx.find_element_by_id("loginBtn").click()
self.dx.implicitly_wait(3)
def tearDown(self) -> None: #方法的结束
time.sleep(10)
self.dx.close()
def test_1(self): #用例都要test命名开头,不是以test不会运行
self.dx.find_element_by_class_name("icon-user").click() #用户中心
def test_3(self): #运行顺序:0-9 A-Z a-z
self.dx.find_element_by_class_name("icon-user").click() #用户中心
time.sleep(1)
self.dx.find_element_by_link_text("用户管理").click() #用户管理
def test_a(self):
self.dx.find_element_by_class_name("icon-user").click()
time.sleep(1)
self.dx.find_element_by_link_text("用户管理").click()
time.sleep(1)
user = self.dx.find_element_by_name("/cms/manage/user-list.html")
self.dx.switch_to.frame(user)
self.dx.find_element_by_class_name("btn-primary").click()
def test_2(self):
self.dx.find_element_by_class_name("icon-cogs").click()
time.sleep(1)
self.dx.find_element_by_link_text("栏目设置").click()
def sy(self): #私有
print(" 私有,不会被运行")
if name == 'main':
url=r"C:\Users\Administrator\PycharmProjects\untitled2\dcs" #相对路径第三种
d=unittest.TestLoader().discover(start_dir=url,pattern="ss1*.py")
bglj=r"C:\Users\Administrator\PycharmProjects\untitled2\dcs" #存放报告的路径
new=time.strftime("%y-%m-%d %H-%M-%S") #时间戳
file=bglj+"/"+str(new)+"ui.html" #报告存放路径(报告路径+拼接符号+时间戳+生成html的后缀名)
f=open(file,"wb") #open打开, file文件,w写,b二进制的方式
TestRunner(d,
filename=file,
title='ui自动化测试报告',
tester='dcs',
desc="cms项目测试生成的报告",
templates=1
).run()
报告:

浙公网安备 33010602011771号