Python+requests+unittest+HTMLTestRunner+接口自动化测试简单版

#coding=utf-8
#UnitTest demo
import unittest
import requests,json
from HTMLTestRunner import HTMLTestRunner
from datetime import *

class LoginTest(unittest.TestCase):#定义一个类,继承了unittest.testcase的基类
    def setUp(self):#测试固件 setUp用于存放一些公共初始化的部分
        self.url="http://127.0.0.1:8888/login?"
    def testlogin1(self):#每一个测试用例是一个单元 命名test开头
        """账号密码正确"""
        form={
    
    "name":"lide","pwd":"111"}#参数 账户密码正确
        r=requests.get(self.url,data=form)#调用接口
        print(r.status_code)
        msg=json.loads(r.text)#将返回文本转为字典
        #断言
        self.assertEqual(msg['message'],'登录成功!')
    def testlogin2(self):
        form={
    
    "name":"lide","pwd":"111222"}#参数 密码错误
        r=requests.get(self.url,data=form)
        msg = json.loads(r.text)  # 将返回文本转为字典
        # 断言
        self.assertEqual(msg['message'], '账号或者密码错误!')
    def testlogin3(self):
        form = {
    
    "name": "lide1", "pwd": "111"}  # 参数 账号错误
        r = requests.get(self.url, data=form)
        msg = json.loads(r.text)  # 将返回文本转为字典
        # 断言
        self.assertEqual(msg['message'], '账号或者密码错误!')
    def testlogin4(self):
        form = {
    
    "name": "", "pwd": "111"}  # 参数 账号为空
        r = requests.get(self.url, data=form)
        msg = json.loads(r.text)  # 将返回文本转为字典
        # 断言
        self.assertEqual(msg['message'], '账号或者密码不能为空!')
    def testlogin5(self):
        form = {
    
    "name": "lide", "pwd": ""}  # 参数 密码为空
        r = requests.get(self.url, data=form)
        msg = json.loads(r.text)  # 将返回文本转为字典
        # 断言
        self.assertEqual(msg['message'], '账号或者密码不能为空!')
    def testlogin6(self):
        form = {
    
    "name": "", "pwd": ""}  # 参数 账号密码为空
        r = requests.get(self.url, data=form)
        msg = json.loads(r.text)  # 将返回文本转为字典
        # 断言
        self.assertEqual(msg['message'], '账号或者密码不能为空!')
    def testlogin7(self):
        form = {
    
    "name": "lide1", "pwd": "11122"}  # 参数 账号密码错误
        r = requests.get(self.url, data=form)
        msg = json.loads(r.text)  # 将返回文本转为字典
        # 断言
        self.assertEqual(msg['message'], '账号或者密码错误!')
    # def tearDown(self):
    #     pass

# class test2(unittest.TestCase):
#     print("一个接口一个类")


def suite1():
    """
    定义一个套件函数用来添加测试用例 按需求添加 想测哪个测哪个
    :return: 测试套件
    """
    loginTestSuite=unittest.TestSuite()#生成测试套件实例
    #添加TestCase 缺点得一个一个添加 优点 想测哪个加哪个
    loginTestSuite.addTest(LoginTest("testlogin1")) #类里的方法
    loginTestSuite.addTest(LoginTest("testlogin2"))  # 类里的方法
    loginTestSuite.addTest(LoginTest("testlogin3"))
    loginTestSuite.addTest(LoginTest("testlogin4"))
    loginTestSuite.addTest(LoginTest("testlogin5"))
    return loginTestSuite #返回测试套件实例

def suite2():
    """
    一次性添加所有case
    :return:
    """
    logintestsuite=unittest.makeSuite(LoginTest,"test")#添加所有test 开头的用例
    return logintestsuite


if __name__ == '__main__':
    now=date.today()
    with open(str(now)+"_report"+".html","wb") as f:
        runner=HTMLTestRunner(stream=f,title="登录测试",description="登录自动化测试")
        runner.run(suite1())
        #f.close()





猜你喜欢

转载自blog.csdn.net/weixin_42166361/article/details/104767391