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、运行环境变量
image
2、复制;路径C:\Users\Administrator\PycharmProjects\untitled2\dcs\ss1.py
image
3、编辑配置
image
4、点击python,添加
image
5、添加路径和相对路径
image
6、在右上角点击运行
image

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

(2)执行用例
image

案例:
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) #运行路径下搜索到的用例
image

第四种:通过用例模版进行执行
(1)通过自己下载报告模版进行运行
image
将自动化报告模版,存放在一个包下
image
image
image
案例:
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

image
通过pip list 查看安装成功
image
2、查看testrunner的用法
testrunner ,按住ctrl+点击testrunner
image
3、改报告模版
image
image
image
image
image
案例:
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()

posted @ 2026-05-22 11:07  刘sir金牌讲师  阅读(7)  评论(0)    收藏  举报