接口测试——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打开报告文件,写入执行内容、标题、执行情况、测试人员,生成接口测试报告。这就是我的接口自动化测试

posted @ 2025-03-26 11:26  uai  阅读(39)  评论(0)    收藏  举报