unitest的四种运行方法
第一种执行所有的用例:
unittest.main() #执行所有的用例
案例
mport unittest #python中自带的一个自动化框架的库
class Cms(unittest.TestCase): # 创建一个类cms,继承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 test_1(self): #用例都要test命名开头,不是以test不会运行
print(1)
def test_3(self): #运行顺序:0-9 A-Z a-z
print(3)
def test_a(self):
print("a")
def test_2(self):
print(2)
def test_A(self):
print("A")
def sy(self): #私有
print(" 私有")
if name == 'main':
unittest.main() #执行所有的用例
第二种方法:
运行单条用例或者多条指定的用例
(1)TestSuite() 套件
(2)addTest 添加单条用例
(3)addTests 添加多条用例
(4)unittest.TextTestRunner()运行用例
案例:
import unittest #python中自带的一个自动化框架的库
class Cms(unittest.TestCase): # 创建一个类cms,继承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 test_1(self): #用例都要test命名开头,不是以test不会运行
print(1)
def test_3(self): #运行顺序:0-9 A-Z a-z
print(3)
def test_a(self):
print("a")
def test_2(self):
print(2)
def test_A(self):
print("A")
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(套件)
注意点:
1、运行环境变量

2、复制;路径C:\Users\Administrator\PycharmProjects\untitled2\dcs\ss1.py

3、编辑配置

4、点击python,添加

5、添加路径和相对路径

6、在右上角点击运行

第三种:执行一个路径下的用例
(1)unittest.测试用例路径

(2)执行用例

案例:
import unittest #python中自带的一个自动化框架的库
class Cms(unittest.TestCase): # 创建一个类cms,继承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 test_1(self): #用例都要test命名开头,不是以test不会运行
print(1)
def test_3(self): #运行顺序:0-9 A-Z a-z
print(3)
def test_a(self):
print("a")
def test_2(self):
print(2)
def test_A(self):
print("A")
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(套件),因为套件添加运行的的用例
url=r"C:\Users\Administrator\PycharmProjects\untitled2\dcs" #相对路径
d=unittest.TestLoader().discover(start_dir=url,pattern="ss*.py")
unittest.TestLoader()路径下的用例,搜索,start_dir目录,pattern匹配文档名
unittest.TextTestRunner().run(d) #运行路径下搜索到的用例

第四种:通过用例模版进行执行
(1)通过自己下载报告模版进行运行

将自动化报告模版,存放在一个包下



案例:
import unittest #python中自带的一个自动化框架的库
import time #导入time模块
from dcs.HTMLTestRunnerNew import HTMLTestRunner # 通过包.报告模版,导入HTMLTestRunner
class Cms(unittest.TestCase): # 创建一个类cms,继承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 test_1(self): #用例都要test命名开头,不是以test不会运行
print(1)
def test_3(self): #运行顺序:0-9 A-Z a-z
print(3)
def test_a(self):
print("a")
def test_2(self):
print(2)
def test_A(self):
print("A")
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(套件),因为套件添加运行的的用例
url=r"C:\Users\Administrator\PycharmProjects\untitled2\dcs" #相对路径
d=unittest.TestLoader().discover(start_dir=url,pattern="ss*.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二进制的方式
HTMLTestRunner(
stream=f,title="ui自动化测试报告",description="用例执行情况",tester="dcs"
).run(d) # 通过html报告模版运行,stream 文件,title标题,description执行用例情况
tester 测试人员,run运行(内容)
(2)通过下载模版,运行生成报告
1、下载报告模版>pip install unittestreport

通过pip list 查看安装成功

2、查看testrunner的用法
testrunner ,按住ctrl+点击testrunner

3、改报告模版





案例:
import unittest #python中自带的一个自动化框架的库
import time #导入time模块
from unittestreport import TestRunner
class Cms(unittest.TestCase): # 创建一个类cms,继承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 test_1(self): #用例都要test命名开头,不是以test不会运行
print(1)
def test_3(self): #运行顺序:0-9 A-Z a-z
print(3)
def test_a(self):
print("a")
def test_2(self):
print(2)
def test_A(self):
print("A")
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(套件),因为套件添加运行的的用例
url=r"C:\Users\Administrator\PycharmProjects\untitled2\dcs" #相对路径
d=unittest.TestLoader().discover(start_dir=url,pattern="ss*.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=3
).run()
浙公网安备 33010602011771号