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)
相关推荐
二十雨辰7 分钟前
[Java基础]网络编程
java·开发语言
AC使者21 分钟前
介绍 TensorFlow 的基本概念和使用场景。
开发语言·自然语言处理·sqlite·github
HealthScience21 分钟前
【异常错误】pycharm debug view变量的时候显示不全,中间会以...显示
ide·python·pycharm
kiramario1 小时前
【结束】JS如何不通过input的onInputFileChange使用本地mp4文件并播放,nextjs下放入public文件的视频用video标签无法打开
开发语言·javascript·音视频
豌豆花下猫1 小时前
Python 潮流周刊#90:uv 一周岁了,优缺点分析(摘要)
后端·python·ai
土豆儿@1 小时前
java之泛型
java·开发语言
橘猫云计算机设计2 小时前
基于SSM的《计算机网络》题库管理系统(源码+lw+部署文档+讲解),源码可白嫖!
java·数据库·spring boot·后端·python·计算机网络·毕设
小伍_Five2 小时前
从0开始:OpenCV入门教程【图像处理基础】
图像处理·python·opencv
m0_748245342 小时前
python——Django 框架
开发语言·python·django
曼巴UE52 小时前
UE5.3 C++ TArray系列(一)
开发语言·c++·ue5