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)
相关推荐
喵同志不止步于码农9 小时前
Java Caffeine 快速入门
java·开发语言·后端·并发·缓存一致性
Fluxproxy9 小时前
Python请求玄学根治:彻底解决脚本间歇性超时、断连、假死问题
网络·python·安全
2kπ9 小时前
QT开发笔记
开发语言·笔记·qt
青 春 记 忆9 小时前
零基础入门Python15|关联、聚合、索引与事务:订单数据库
开发语言·python·后端开发
江屿风9 小时前
【STM32基础篇】【嵌入式生态问题及历史追溯】流食般投喂
大数据·开发语言·人工智能·笔记·stm32·嵌入式硬件
charlie11451419110 小时前
深探std::vector:三指针、扩容与迭代器失效
开发语言·c++·开源项目
asyxchenchong88810 小时前
R语言混合效应(多水平/层次/嵌套)模型及贝叶斯实现技术应用
开发语言·r语言
熊猫钓鱼>_>10 小时前
从“串数据“焦虑到 Space 自由,我用 Agent Bucket 智能体桶管游戏素材
开发语言·人工智能·游戏·agent·bucket·workbuddy·space
qq_5137280411 小时前
Alert 原生弹窗处理
python