Python基础Day16-案例

  • 案例一

  • 需求

1, 对登录函数进行测试, 登录函数 定义在 tools.py

2, 在 case 目录中书写用例对login 函数进行测试, 使用断言

3, 将 login 函数的测试数据定义在 json 文件中,完成参数化, data 目录中

4, 生成测试报告 report 目录中

tools.py(开发代码)

bash 复制代码
# 自动化测试函数

def login(username, password):
    if username == 'admin' and password == '123456':
        return '登录成功'
    else:
        return '登录失败'

data.test_data.json (data文件夹存放json文件测试数据)

bash 复制代码
[
  {
    "desc": "正确的用户名和密码",
    "username": "admin",
    "password": "123456",
    "expect": "登录成功"
  },
  {
    "desc": "错误的用户名",
    "username": "root",
    "password": "123456",
    "expect": "登录失败"
  },
  {
    "desc": "错误的的密码",
    "username": "admin",
    "password": "123123",
    "expect": "登录失败"
  },
  {
    "desc": "错误的用户名和密码",
    "username": "root",
    "password": "123676",
    "expect": "登录失败"
  },
  {
    "desc": "用户名和密码不能为空",
    "username": "",
    "password": "",
    "expect": "登录失败"
  }
]

app.py(获取项目完整路径---绝对路径)

bash 复制代码
import os

BASE_DIR = os.path.dirname(__file__)

if __name__ == '__main__':
    print(BASE_DIR)

common.read_data.py(common文件夹放 读取测试数据方法)

bash 复制代码
import json
from testDemo9.app import BASE_DIR

def build_test_data_1():
    with open(BASE_DIR+'/data/test_data.json', 'r', encoding='utf-8') as f:
        data_list = json.load(f)  # [{},{},{},{}]
        new_list = []
        for data in data_list:  # 字典
            username = data.get('username')
            password = data.get('password')
            expect = data.get('expect')
            # c = (username, password, expect)
            # new_list.append(tuple(c))
            new_list.append((username, password, expect))

        return new_list

def build_test_data_2():
    with open(BASE_DIR+'/data/test_data.json', 'r', encoding='utf-8') as f:
        data_list = json.load(f)  # [{},{},{},{}]
        new_list = []
        for data in data_list:  # 字典 中的值都要 使用data.values() 获取,在转换成元组
           new_list.append(tuple(data.values()))
        return new_list

if __name__ == '__main__':

    print(build_test_data_1())
    print(build_test_data_2())

case.test_login.py(参数化测试数据脚本)

bash 复制代码
import unittest
from parameterized import parameterized

from testDemo9.common.read_data import build_test_data_1
from testDemo9.tools import login


class TestLogin(unittest.TestCase):
    """参数化测试数据"""
    @parameterized.expand(build_test_data_1)
    def test_login(self, username, password, expect):
        print(f'username:{username}, password:{password}, expect:{expect}')
        self.assertEquals(expect,login(username, password))
        

login_report.py(套件执行生成测试报告)

bash 复制代码
from htmltestreport import HTMLTestReport
import unittest
from case.test_login import TestLogin
from app import BASE_DIR

suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestLogin))

runner = HTMLTestReport(BASE_DIR+'/report/test_login_report.html', '登录测试用例', '100%通过')
runner.run(suite)
相关推荐
迁旭几秒前
prompt_toolkit 3.0.52 API 参考手册
python
WL_Aurora3 分钟前
Python 算法基础篇之堆和优先队列
python·算法
早日退休!!!3 分钟前
PyTorch适配NPU
人工智能·pytorch·python
刀法如飞12 分钟前
一款开箱即用的Flask 3.0 MVC工程脚手架,面向AI开发
后端·python·flask
xingpanvip16 分钟前
星盘接口开发文档:组合三限盘接口指南
android·开发语言·前端·python·php·lua
无忧.芙桃30 分钟前
现代C++讲解之变量模板,泛型lambda,函数返回类型推导的使用
开发语言·c++·visualstudio
格林威1 小时前
工业视觉检测:两大主流异常检测开源框架深度对比(PatchCore vs SPADE)
开发语言·人工智能·深度学习·数码相机·计算机视觉·视觉检测·工业相机
2zcode1 小时前
基于Matlab元胞自动机模拟(CA)静态再结晶过程
开发语言·matlab·静态再结晶
vortex51 小时前
Villain:新一代轻量级 C2 框架完整使用指南
python·网络安全·kali·c2
测试员周周1 小时前
【AI测试系统】第5篇:AI 编码工具抛硬币?我们用 LangGraph 做了个“确定性+AI”的测试系统(附自愈架构)
人工智能·python·功能测试·测试工具·架构·langchain·单元测试