unittest接口的封装(也包含与接口测试)

unittest框架
(1)第一种执行所有的用例
unittest.main()  #执行所有的用例
案例:
import   unittest  #导入unittest框架
import requests #导入reuquest库
class  Cms_kj(unittest.TestCase): #创建一个类,继承unittest.testcase
@classmethod
def setUpClass(cls) -> None:   # 类的开始
cls.s=requests.Session()
@classmethod
def tearDownClass(cls) -> None:
pass
    def  setUp(self) -> None:
pass
    def  tearDown(self) -> None:
pass
    def  test1(self): #登录接口
url1 = "http://49.233.201.254:8080/cms/manage/loginJump.do"  # 接口的url
data1 = {
"userAccount": "admin",
"loginPwd": 123456
}  # 接口的请求参数
headers1 = {"Content-Type": "application/x-www-form-urlencoded"}  # 接口请求类型
dx1 = self.s.post(url=url1, data=data1, headers=headers1)
print(dx1.text)
def test2(self): #查询用户接口
url2 = "http://49.233.201.254:8080/cms/manage/queryUserList.do"
data2 = {
"startCreateDate": "", "endCreateDate": "",
"searchValue": "", "page": 1
}
        headers2 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx2 = self.s.post(url=url2, data=data2, headers=headers2)
print(dx2.text)
def  test3(self): #查询栏目接口
url3 = "http://49.233.201.254:8080/cms/manage/findCategoryByPage.do"
data3 = {"parentId": "", "categoryName": "", " page": 1}
        headers3 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx = self.s.post(url=url3, data=data3, headers=headers3)
print(dx.text)
def  test4(self): #查询咨询接口
url4 = "http://49.233.201.254:8080/cms/manage/findArticleByPage.do"
data4 = {"categoryId": "", "startCreateDate": "", " endCreateDate": "", " articleTitle": "",
"page": 1}
        headers4 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx = self.s.post(url=url4, data=data4, headers=headers4)
print(dx.text)
def  dy(self):  #独有的接口,没有test开头
url="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince"
dx=self.s.get(url=url)
print(dx.text)

if name == 'main':
    unittest.main()  #执行所有的用例
image
(2)执行单个用例或部分用例
import   unittest  #导入unittest框架
import requests #导入reuquest库
class  Cms_kj(unittest.TestCase): #创建一个类,继承unittest.testcase
@classmethod
def setUpClass(cls) -> None:   # 类的开始
cls.s=requests.Session()
@classmethod
def tearDownClass(cls) -> None:
pass
    def  setUp(self) -> None:
pass
    def  tearDown(self) -> None:
pass
    def  test1(self): #登录接口
url1 = "http://49.233.201.254:8080/cms/manage/loginJump.do"  # 接口的url
data1 = {
"userAccount": "admin",
"loginPwd": 123456
}  # 接口的请求参数
headers1 = {"Content-Type": "application/x-www-form-urlencoded"}  # 接口请求类型
dx1 = self.s.post(url=url1, data=data1, headers=headers1)
print(dx1.text)
def test2(self): #查询用户接口
url2 = "http://49.233.201.254:8080/cms/manage/queryUserList.do"
data2 = {
"startCreateDate": "", "endCreateDate": "",
"searchValue": "", "page": 1
}
        headers2 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx2 = self.s.post(url=url2, data=data2, headers=headers2)
print(dx2.text)
def  test3(self): #查询栏目接口
url3 = "http://49.233.201.254:8080/cms/manage/findCategoryByPage.do"
data3 = {"parentId": "", "categoryName": "", " page": 1}
        headers3 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx = self.s.post(url=url3, data=data3, headers=headers3)
print(dx.text)
def  test4(self): #查询咨询接口
url4 = "http://49.233.201.254:8080/cms/manage/findArticleByPage.do"
data4 = {"categoryId": "", "startCreateDate": "", " endCreateDate": "", " articleTitle": "",
"page": 1}
        headers4 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx = self.s.post(url=url4, data=data4, headers=headers4)
print(dx.text)
def  dy(self):  #独有的接口,没有test开头
url="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince"
dx=self.s.get(url=url)
print(dx.text)

if name == 'main':
    tj=unittest.TestSuite() #创建一个套件的对象
    # tj.addTest(Cms_kj('test1')) #添加单个用例
tj.addTests([Cms_kj('test1'),Cms_kj('test4')]) #添加多个指定的用例
unittest.TextTestRunner().run(tj) #执行用例,执行套件testsuite中的用例
image
(3)执行一个路径下的用例
import   unittest  #导入unittest框架
import requests #导入reuquest库
import  os
class  Cms_kj(unittest.TestCase): #创建一个类,继承unittest.testcase
@classmethod
def setUpClass(cls) -> None:   # 类的开始
cls.s=requests.Session()
@classmethod
def tearDownClass(cls) -> None:
pass
    def  setUp(self) -> None:
pass
    def  tearDown(self) -> None:
pass
    def  test1(self): #登录接口
url1 = "http://49.233.201.254:8080/cms/manage/loginJump.do"  # 接口的url
data1 = {
"userAccount": "admin",
"loginPwd": 123456
}  # 接口的请求参数
headers1 = {"Content-Type": "application/x-www-form-urlencoded"}  # 接口请求类型
dx1 = self.s.post(url=url1, data=data1, headers=headers1)
print(dx1.text)
def test2(self): #查询用户接口
url2 = "http://49.233.201.254:8080/cms/manage/queryUserList.do"
data2 = {
"startCreateDate": "", "endCreateDate": "",
"searchValue": "", "page": 1
}
        headers2 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx2 = self.s.post(url=url2, data=data2, headers=headers2)
print(dx2.text)
def  test3(self): #查询栏目接口
url3 = "http://49.233.201.254:8080/cms/manage/findCategoryByPage.do"
data3 = {"parentId": "", "categoryName": "", " page": 1}
        headers3 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx = self.s.post(url=url3, data=data3, headers=headers3)
print(dx.text)
def  test4(self): #查询咨询接口
url4 = "http://49.233.201.254:8080/cms/manage/findArticleByPage.do"
data4 = {"categoryId": "", "startCreateDate": "", " endCreateDate": "", " articleTitle": "",
"page": 1}
        headers4 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx = self.s.post(url=url4, data=data4, headers=headers4)
print(dx.text)
def  dy(self):  #独有的接口,没有test开头
url="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince"
dx=self.s.get(url=url)
print(dx.text)

if name == 'main':
   url=os.getcwd() #获取相对路径 #C:\Users\Administrator\PycharmProjects\untitled2\dcs
d=unittest.TestLoader().discover(start_dir=url,pattern="jk1*.py") #TestLoader()搜索一个路径下的用例
unittest.TextTestRunner().run(d) #TextTestRunner运行用例,运行搜索到的用例d
image
(4)第四种结合报告生成测试报告
一、自己导入报告模版
image
导入报告模版
image
案例:
import   unittest  #导入unittest框架
import requests #导入reuquest库
from  dcs.HTMLTestRunnerNew import  HTMLTestRunner
import  time
import  os
class  Cms_kj(unittest.TestCase): #创建一个类,继承unittest.testcase
@classmethod
def setUpClass(cls) -> None:   # 类的开始
cls.s=requests.Session()
@classmethod
def tearDownClass(cls) -> None:
pass
    def  setUp(self) -> None:
pass
    def  tearDown(self) -> None:
pass
    def  test1(self): #登录接口
url1 = "http://49.233.201.254:8080/cms/manage/loginJump.do"  # 接口的url
data1 = {
"userAccount": "admin",
"loginPwd": 123456
}  # 接口的请求参数
headers1 = {"Content-Type": "application/x-www-form-urlencoded"}  # 接口请求类型
dx1 = self.s.post(url=url1, data=data1, headers=headers1)
print(dx1.text)
def test2(self): #查询用户接口
url2 = "http://49.233.201.254:8080/cms/manage/queryUserList.do"
data2 = {
"startCreateDate": "", "endCreateDate": "",
"searchValue": "", "page": 1
}
        headers2 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx2 = self.s.post(url=url2, data=data2, headers=headers2)
print(dx2.text)
def  test3(self): #查询栏目接口
url3 = "http://49.233.201.254:8080/cms/manage/findCategoryByPage.do"
data3 = {"parentId": "", "categoryName": "", " page": 1}
        headers3 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx = self.s.post(url=url3, data=data3, headers=headers3)
print(dx.text)
def  test4(self): #查询咨询接口
url4 = "http://49.233.201.254:8080/cms/manage/findArticleByPage.do"
data4 = {"categoryId": "", "startCreateDate": "", " endCreateDate": "", " articleTitle": "",
"page": 1}
        headers4 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx = self.s.post(url=url4, data=data4, headers=headers4)
print(dx.text)
def  dy(self):  #独有的接口,没有test开头
url="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince"
dx=self.s.get(url=url)
print(dx.text)

if name == 'main':
   url=os.getcwd() #获取相对路径 #C:\Users\Administrator\PycharmProjects\untitled2\dcs
   # url = r"C:\Users\Administrator\PycharmProjects\untitled2\dcs"
d=unittest.TestLoader().discover(start_dir=url,pattern="jk1*.py") #TestLoader()搜索一个路径下的用例
bgurl=os.getcwd()

bgurl=r"C:\Users\Administrator\PycharmProjects\untitled2\dcs"

new=time.strftime("%y-%m-%d %H-%M-%S")
   file=bgurl+"/"+str(new)+"_jk.html"
print(file)
   f=open(file,"bw")
   HTMLTestRunner(stream=f,title="Cms 接口自动化测试报告",
description="接口用例执行情况").run(d)
image
image
二、下载unittestreport报告
image
导入库:
image
案例:
import   unittest  #导入unittest框架
import requests #导入reuquest库
from  dcs.HTMLTestRunnerNew import  HTMLTestRunner
from  unittestreport import TestRunner
import  time
import  os
class  Cms_kj(unittest.TestCase): #创建一个类,继承unittest.testcase
@classmethod
def setUpClass(cls) -> None:   # 类的开始
cls.s=requests.Session()
@classmethod
def tearDownClass(cls) -> None:
pass
    def  setUp(self) -> None:
pass
    def  tearDown(self) -> None:
pass
    def  test1(self): #登录接口
url1 = "http://49.233.201.254:8080/cms/manage/loginJump.do"  # 接口的url
data1 = {
"userAccount": "admin",
"loginPwd": 123456
}  # 接口的请求参数
headers1 = {"Content-Type": "application/x-www-form-urlencoded"}  # 接口请求类型
dx1 = self.s.post(url=url1, data=data1, headers=headers1)
print(dx1.text)
def test2(self): #查询用户接口
url2 = "http://49.233.201.254:8080/cms/manage/queryUserList.do"
data2 = {
"startCreateDate": "", "endCreateDate": "",
"searchValue": "", "page": 1
}
        headers2 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx2 = self.s.post(url=url2, data=data2, headers=headers2)
print(dx2.text)
def  test3(self): #查询栏目接口
url3 = "http://49.233.201.254:8080/cms/manage/findCategoryByPage.do"
data3 = {"parentId": "", "categoryName": "", " page": 1}
        headers3 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx = self.s.post(url=url3, data=data3, headers=headers3)
print(dx.text)
def  test4(self): #查询咨询接口
url4 = "http://49.233.201.254:8080/cms/manage/findArticleByPage.do"
data4 = {"categoryId": "", "startCreateDate": "", " endCreateDate": "", " articleTitle": "",
"page": 1}
        headers4 = {"Content-Type": "application/x-www-form-urlencoded"}
        dx = self.s.post(url=url4, data=data4, headers=headers4)
print(dx.text)
def  dy(self):  #独有的接口,没有test开头
url="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince"
dx=self.s.get(url=url)
print(dx.text)

if name == 'main':
   url=os.getcwd() #获取相对路径 #C:\Users\Administrator\PycharmProjects\untitled2\dcs
   # url = r"C:\Users\Administrator\PycharmProjects\untitled2\dcs"
d=unittest.TestLoader().discover(start_dir=url,pattern="jk1*.py") #TestLoader()搜索一个路径下的用例
bgurl=os.getcwd()

bgurl=r"C:\Users\Administrator\PycharmProjects\untitled2\dcs"

new=time.strftime("%y-%m-%d %H-%M-%S")
   file=bgurl+"/"+str(new)+"_jk.html"
print(file)
   f=open(file,"bw")
   TestRunner(d,
filename=file,
report_dir="./reports",
title='测试报告',
tester='测试员DCS77',
desc="CMD项目测试生成的报告",
templates=1
).run()
image
image

posted @ 2026-05-25 15:51  刘sir金牌讲师  阅读(6)  评论(0)    收藏  举报