Beispiel #1
0
#str--->dict eval  json loads
#接口自动化的流程   写用例---执行用例---报告
#unittest
#case  测试用例
#suite 测试套件
#loader 加载测试用例
#run 执行测试用例
#result 测试结果  测试报告
#main(程序的入口)  收集当前模块的unittest的用例
#mock  模拟测试
#TestCase   setUP tearDown run assertEqual
#TestLoader loadTestFromModule  loadTestFromName
#TestSuite addTest addTests run
#HTMLTestRunnerNew
do_excel = DoExcel(contants.case_file)
rest = do_excel.get_data('login')

request = Request()  # 实例化对象
for item in rest:
    print("开始执行第{}用例".format(item.id))  # 从excel里面读出来的数据是一个个的字符串,所以需要转换
    #使用封装好的request 来完成请求
    resp = request.request(item.method, item.url, item.data)
    #将返回结果和期望结果进行匹配
    if resp.text == item.expected:
        #一致就写入excel的结果为PASS,
        do_excel.write_result('login', item.id + 1, resp.text,
                              'PASS')  # item.id+1是当前的row,resp.text真实值
        print("第{}用例执行结果:PASS".format(item.id))
    else:
        do_excel.write_result('login', item.id + 1, resp.text, 'FAIL')
        print("第{}用例执行结果:FAIL".format(item.id))
Beispiel #2
0
import unittest
from common.do_excel import DoExcel
from common import contants
from libext.ddt import ddt, data
from common.request import Request
from common.logger import get_logger
request = Request()

do_excel = DoExcel(contants.data_file)
cases = do_excel.get_data('login')
logger = get_logger('login')


@ddt
class LoginTest(unittest.TestCase):
    def setUp(self):
        pass

    @data(*cases)
    def test_login(self, case):
        logger.info('开始执行第{}条用例'.format(case.case_id))
        res = request.request(case.method, case.url, case.data)
        logger.info(res.text)
        try:
            self.assertEqual(case.expected, res.text, 'login error')
            do_excel.write_back(case.case_id + 1, res.text, 'PASS')
        except AssertionError as e:
            logger.error('断言错误:{}'.format(e))
            do_excel.write_back(case.case_id + 1, res.text, 'Failed')
            raise e
Beispiel #3
0
import unittest
from libext.ddt import ddt, data
from common.do_excel import DoExcel
from common.request import Request
from common import contants
from common.read_config import ReadConfig
from common.logger import get_logger
from common.connect_mysql import MysqlUtil
import json
from common import context

do_excel = DoExcel(contants.case_dir, 'login')
cases = do_excel.get_data()
readconfig = ReadConfig()
path_url = readconfig.get_value('url', 'path_url')  #这些放到类里面也可以,用self调用
logger = get_logger('login')


@ddt
class TestLogin(unittest.TestCase):  # 继承TestCase类
    @classmethod
    def setUpClass(cls):  # TestRecharge类执行前执行一次   类方法
        cls.request = Request(
        )  # 实例化对象 Request() 实例化为了传递cookies,Request初始化的时候有session的对象
        cls.mysql = MysqlUtil()  # 实例化一个对象

    def setUp(self):
        pass

    @data(*cases)
    def test_login(self, case):
Beispiel #4
0
import unittest
from common.read_path import *
from common.http_request import HttpRequest
from common.do_excel import DoExcel
from common.get_data import GetData
from ddt import ddt, data
from common.do_mysql import DoMysql
testdata = DoExcel.get_data(testcase_path)


@ddt
class TestHttpRequest(unittest.TestCase):
    def setUp(self):
        pass

    @data(*testdata)
    def test_api(self, item):
        passorfail = None
        #请求之前完成loanid的替换
        if item['data'].find('${loanid}') != -1:
            if getattr(GetData, 'loanid') == None:
                id = DoMysql.cnn_db(
                    'select max(id) from loan where memberid=82')[0]
                item['data'] = str(item['data']).replace('${loanid}', str(id))
                setattr(GetData, 'loanId', id)  #利用反射去存储结果
            else:
                item['data'] = str(item['data']).replace(
                    '${loanid}', str(getattr(GetData, 'LoanId')))
        #判断sql语句
        if item['sql'] == None:  #没有sql语句时
            print('正在执行的用例是:第{}条用例'.format(item['case_id']))