unittest_DDT数据驱动及BeautifulReport生产HTML测试报告

1、创建一个被测模块

users = [{'user': 'python34', 'password': '123456'}]


def register(username, password1, password2):
# 判断是否有参数为空
    if not all([username, password1, password2]):
        return {"code": 0, "msg": "所有参数不能为空"}
# 注册功能
    for user in users:  # 遍历出所有账号,判断账号是否存在
        if username == user['user']:
# 账号存在
            return {"code": 0, "msg": "该账户已存在"}
    else:
        if password1 != password2:
# 两次密码不一致
            return {"code": 0, "msg": "两次密码不一致"}
        else:
# 账号不存在 密码不重复,判断账号密码长度是否在 6-18位之间
            if 6 <= len(username) >= 6 and 6 <= len(password1) <= 18:
# 注册账号
                users.append({'user': username, 'password': password2})
                return {"code": 1, "msg": "注册成功"}
            else:
# 账号密码长度不对,注册失败
                return {"code": 0, "msg": "账号和密码必须在6-18位之间"}


if __name__ == "__main__":
    res = register('python14', '123456', '123456')
    print(res)

2、创建获取Excel包

加载工作簿,一个excel文件
openpyxl模块下的load_workbook 
封装为一个openpyxl.workbook.workbook.Workbook的对象
wb = load_workbook('case.xlsx')
wb.active上次关闭的sheet
读取表
表又被封装为worksheet对象
wb[表名]
ws = wb['Sheet1']
# # 可以获取总行/列数
print(ws.max_row,ws.max_column)
获取单元格
根据行row列column取单元格,行列都是从1开始
cell = ws.cell(row=2,column=1)
通过cell对象的value属性可以获取值
value只有两种类型,字符串和数值
如果cell里没有值,返回None
print(cell,cell.value)

from openpyxl import load_workbook


class open_excel:

    def __init__(self,filename,sheetname):
        self.wb = load_workbook(filename)
        self.ws = self.wb[sheetname]

    def open_sheet(self):
        """
        把每行数据用字典封装起来,合并成一个集合,方便后面调用
        :return: 
        """
        row = self.ws.max_row
        column = self.ws.max_column
        title = {}
        data = []
        for i in range(1,column+1):
            wa = self.ws.cell(row=1,column=i).value
            title[i]=wa

        for i in range(1, row + 1):
            temp = {}
            for j in range(1,column+1):

                temp[title[j]] = self.ws.cell(i,j).value
            data.append(temp)
        del data[0]

        for i in data:
            i['expect'] = eval(i['expect'])

        return data





if __name__ == '__main__':
    res = open_excel(r'D:\PYthon\untitled_test\Ningmengban\day18\case.xlsx','Sheet1')
    s = res.open_sheet()
    print(s)

3、测试用例模块

from unittest import TestCase
from ddt import ddt,data

from register import registers
from register import excel


res = excel.open_excel(r'D:\PYthon\untitled_test\Ningmengban\day18\case.xlsx', 'Sheet1')
case = res.open_sheet()
# ddt 数据驱动
@ddt
class test_case(TestCase):
    @data(*case)
    def test_log(self,case):
        res = registers.register(
            username=case['username'],
            password1=case['password1'],
            password2=case['password2']
            )
        self.assertEqual(res,case['expect'])

if __name__ == '__main__':
    res = excel.open_excel(r'D:\PYthon\untitled_test\Ningmengban\day18\case.xlsx', 'Sheet1')
    case = res.open_sheet()
    print(case)

4、main模块

from BeautifulReport import BeautifulReport
import unittest
res = unittest.TestLoader()
ts = res.discover(r'D:\PYthon\untitled_test\Ningmengban\day18\register')
br = BeautifulReport(ts)
br.report('测试报告','玩玩.html',report_dir=r'D:\PYthon\untitled_test\Ningmengban\day18\register')
posted @ 2020-11-16 14:51  Old_Arthurㄟ  阅读(137)  评论(0编辑  收藏  举报