接口测试——requests库(python+requests)(框架2)
一、unittest框架
1、运行所有接口用例
unittest.main()
import unittest
import requests
from time import *
from uizdh.HTMLTestRunnerNew import HTMLTestRunner
class cms(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.s=requests.Session()
@classmethod
def tearDownClass(cls) -> None:
pass
def setUp(self) -> None:
url1 = "http://49.233.201.254:8080/cms/manage/loginJump.do"
data1 = {'userAccount': 'admin', 'loginPwd': '123456'}
heard1 = {"Content-Type": "application/x-www-form-urlencoded"}
jk1 = self.s.request("post", url=url1, data=data1, headers=heard1)
print(jk1.text)
def tearDown(self) -> None:
pass
# def test1_dl(self):
def test2_yh(self):
url2 = "http://49.233.201.254:8080/cms/manage/queryUserList.do"
data2={
'startCreateDate':'',
'endCreateDate':'',
'searchValue':'',
'page':'2'
}
heard2={"Content-Type":"application/x-www-form-urlencoded"}
jk2=self.s.request("post",url=url2,data=data2,headers=heard2)
print(jk2.text)
def test3_lm(self):
url3 = "http://49.233.201.254:8080/cms/manage/findCategoryByPage.do"
data3 = {
'parentId': '',
'categoryName': '',
'page': 1}
h3 = {"Content-Type": "application/x-www-form-urlencoded"}
jk3 = self.s.request("post", url=url3, data=data3, headers=h3)
print(jk3.text)
if __name__ == '__main__':
# unittest.main()

2、运行部分接口用例
tj=unittest.TestSuite()
tj.addTest(某一个test方法(用例))
unittest.TextTestRuner().run(tj)
import unittest
import requests
from time import *
from uizdh.HTMLTestRunnerNew import HTMLTestRunner
class cms(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.s=requests.Session()
@classmethod
def tearDownClass(cls) -> None:
pass
def setUp(self) -> None:
url1 = "http://49.233.201.254:8080/cms/manage/loginJump.do"
data1 = {'userAccount': 'admin', 'loginPwd': '123456'}
heard1 = {"Content-Type": "application/x-www-form-urlencoded"}
jk1 = self.s.request("post", url=url1, data=data1, headers=heard1)
print(jk1.text)
def tearDown(self) -> None:
pass
# def test1_dl(self):
def test2_yh(self):
url2 = "http://49.233.201.254:8080/cms/manage/queryUserList.do"
data2={
'startCreateDate':'',
'endCreateDate':'',
'searchValue':'',
'page':'2'
}
heard2={"Content-Type":"application/x-www-form-urlencoded"}
jk2=self.s.request("post",url=url2,data=data2,headers=heard2)
print(jk2.text)
def test3_lm(self):
url3 = "http://49.233.201.254:8080/cms/manage/findCategoryByPage.do"
data3 = {
'parentId': '',
'categoryName': '',
'page': 1}
h3 = {"Content-Type": "application/x-www-form-urlencoded"}
jk3 = self.s.request("post", url=url3, data=data3, headers=h3)
print(jk3.text)
if __name__ == '__main__':
# unittest.main()
tj=unittest.TestSuite()
tj.addTest(cms("test2_yh"))
unittest.TextTestRunner().run(tj)

3、执行一个路径下的用例
import unittest
import requests
from time import *
from uizdh.HTMLTestRunnerNew import HTMLTestRunner
class cms(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.s=requests.Session()
@classmethod
def tearDownClass(cls) -> None:
pass
def setUp(self) -> None:
url1 = "http://49.233.201.254:8080/cms/manage/loginJump.do"
data1 = {'userAccount': 'admin', 'loginPwd': '123456'}
heard1 = {"Content-Type": "application/x-www-form-urlencoded"}
jk1 = self.s.request("post", url=url1, data=data1, headers=heard1)
print(jk1.text)
def tearDown(self) -> None:
pass
# def test1_dl(self):
def test2_yh(self):
url2 = "http://49.233.201.254:8080/cms/manage/queryUserList.do"
data2={
'startCreateDate':'',
'endCreateDate':'',
'searchValue':'',
'page':'2'
}
heard2={"Content-Type":"application/x-www-form-urlencoded"}
jk2=self.s.request("post",url=url2,data=data2,headers=heard2)
print(jk2.text)
def test3_lm(self):
url3 = "http://49.233.201.254:8080/cms/manage/findCategoryByPage.do"
data3 = {
'parentId': '',
'categoryName': '',
'page': 1}
h3 = {"Content-Type": "application/x-www-form-urlencoded"}
jk3 = self.s.request("post", url=url3, data=data3, headers=h3)
print(jk3.text)
if __name__ == '__main__':
# unittest.main()
# tj=unittest.TestSuite()
# tj.addTest(cms("test2_yh"))
# unittest.TextTestRunner().run(tj)
path=r"E:\1\python\PycharmProjects\untitled\uizdh"
d=unittest.TestLoader().discover(start_dir=path,pattern="jkkj*.py")
unittest.TextTestRunner().run(d)

4、生成测试报告
import unittest
import requests
from time import *
from uizdh.HTMLTestRunnerNew import HTMLTestRunner
class cms(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.s=requests.Session()
@classmethod
def tearDownClass(cls) -> None:
pass
def setUp(self) -> None:
url1 = "http://49.233.201.254:8080/cms/manage/loginJump.do"
data1 = {'userAccount': 'admin', 'loginPwd': '123456'}
heard1 = {"Content-Type": "application/x-www-form-urlencoded"}
jk1 = self.s.request("post", url=url1, data=data1, headers=heard1)
print(jk1.text)
def tearDown(self) -> None:
pass
# def test1_dl(self):
def test2_yh(self):
url2 = "http://49.233.201.254:8080/cms/manage/queryUserList.do"
data2={
'startCreateDate':'',
'endCreateDate':'',
'searchValue':'',
'page':'2'
}
heard2={"Content-Type":"application/x-www-form-urlencoded"}
jk2=self.s.request("post",url=url2,data=data2,headers=heard2)
print(jk2.text)
def test3_lm(self):
url3 = "http://49.233.201.254:8080/cms/manage/findCategoryByPage.do"
data3 = {
'parentId': '',
'categoryName': '',
'page': 1}
h3 = {"Content-Type": "application/x-www-form-urlencoded"}
jk3 = self.s.request("post", url=url3, data=data3, headers=h3)
print(jk3.text)
if __name__ == '__main__':
# unittest.main()
# tj=unittest.TestSuite()
# tj.addTest(cms("test2_yh"))
# unittest.TextTestRunner().run(tj)
# path=r"E:\1\python\PycharmProjects\untitled\uizdh"
# d=unittest.TestLoader().discover(start_dir=path,pattern="jkkj*.py")
# unittest.TextTestRunner().run(d)
path = r"E:\1\python\PycharmProjects\untitled\uizdh"
bgpath=r"E:\1\python\PycharmProjects\untitled\uizdh"
d = unittest.TestLoader().discover(start_dir=path, pattern="jkkj*.py")
new=strftime("%y-%m-%d %H-%M-%S")
file=bgpath+"/"+str(new)+"jkkj.html"
f=open(file,"bw")
r=HTMLTestRunner(
stream=f,title="接口框架测试报告",description="用例执行情况",tester="dcs"
)
r.run(d)

讲解流程:
先import 导入 unittest这个模块,然后封装一个类class 定义为定义一个test去继承(unittest.testcase):
然后就是类的开始,类开始和结束前面需要加一个装饰器@classmethod,类开用def setupclass(cls)来表示,类的开始cls.session=requests.session()。类结束要用def teardownclass(cls)来表示。类开始结束在整个框架中只会运行一次。然后就是方法开始方法结束,方法开始与结束在每一条用例都会运行一次,方法开始用def setup(self)来表示,方法结束用def teardown(self)来表示。后面就写用例,书用例用def test_开头将每个接口都写上顺序,按ascii码顺序排序1-9,A-Z,a-z,在编写接口的参数和接口请求方式等,或者在py文件中写好并导入调用,最后用main方法作为入口:if _ _name_ _==’_ _main_ _’:用来执行用执行偶三种方法:第一种:unittest.main()来调用上面的所有用例,第二种方法使用:unittest.TestSuite () 套件添加部分用例,addTest(),在使用unittest.estrunner,在用run执行;第三种方法:就是执行一个路径下所有的用例:unittest.defaultTestLoader.discover(start_dir=路径,pattern="搜索的内容"),在使用unittest.TextTestRunner()运行用例,还可以导入报告模板HTMLTestRunner,在去open打开报告文件,写入执行内容、标题、执行情况、测试人员,生成接口测试报告。这就是我的接口自动化测试

浙公网安备 33010602011771号