IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Python框架模型搭建 -> 正文阅读

[开发工具]Python框架模型搭建

如何搭建框架,也就是如何创建包,模块,如何存放编写的代码

--?怎么组织代码,怎么创建包,模块

--?自动化测试用例放在哪里

--?入口main,收集用例放在哪里

--?测试数据,应该放在哪里

--?测试报告放在哪里

--? 配置文件放在哪里

--?日志文件放在哪里

-- excel操作

--?托管提交到公司代码库(git,github,gitlab,gitee)

框架搭建步骤:

1.项目说白了就是一个目录,会放很多的文件,不是包,

所以先创建一个新的项目目录task_211012

2.建立一个收集用例的模块,run.py

3.report/目录存放所有测试报告,

使用unittestreport会自动生成report/目录,如果使用beautifulreport需要自己建立report/目录

4.data/存放所有的测试数据

5.common/存放所有的通用模块

common是通用的,其他的或多或少和项目有关系的

换名话也就是说,当你换一个项目时,common可以原封不动的复制到新项目中使用,但其他是需要修改总分内容的

6.cases/存放所有的测试用例

7.config/存放配置文件

8.log/存放日志文件?

?具体存放的什么代码,如下:

test_login.py(自动代测试用例,参数化)

import unittest
from login import login
from common.excel import read_excel
from ddt import ddt, data
from common.logger import log

# 调用read_excel函数,读取excel文件的数据
excel_path = r'E:\lemon\task_211012\data\cases.xlsx'
login_data = read_excel(excel_path, 'Sheet1')


@ddt
class TestLogin(unittest.TestCase):
    @data(*login_data)
    def test_login(self, row):
        # row表示每次从data这个列表中取出一个数据,{}
        # row代表一组测试数据,相当于for row in data:
        # 源码:会自动生成一个新的test_login1函数
        params = eval(row['data'])
        username = params['username']
        password = params['password']
        expected = eval(row['expected'])
        actual = login(username, password)
        try:
            self.assertEqual(expected, actual)
        except AssertionError as e:
            # 导入logger模块下的变量,不要导入函数
            log.error('用例测试失败')
            raise e

?excel.py(读取测试用例cases.xlsx文件内容)

from openpyxl import load_workbook


def read_excel(file_name, sheet_name):
    wb = load_workbook(file_name)
    sheet = wb[sheet_name]
    data = list(sheet.values)
    titles = data[0]
    rows = [dict(zip(titles, row)) for row in data[1:]]
    return rows

?logger.py(封装日志函数)

from loguru import logger


def get_logger(file):
    logger.add(sink=file, encoding='utf-8')
    return logger


log = get_logger(r'E:\lemon\task_211012\common\log\demo.log')

?read_yaml.py(读取配置文件内容)

import yaml


def read_yaml(filename):
    with open(filename, encoding='utf-8') as f:
        data = yaml.safe_load(f)
        return data

?config.yaml(配置文件)

casename: 'test_database'
server_address: 124.70.35.245
server_port: 8104
database_address: 124.70.35.245
database_port: 3306
database_name: 'EDC'
username: 'admin'
password: 123456

cases.xlsx(测试用例)

?login.py(被测函数)

def login(username=None, password=None):
    if username is None or password is None:
        return {"code": "400", "msg": "用户名或密码为空"}
    if username == 'yuz' and password == '123':
        return {"code": "200", "msg": "登录成功"}
    return {"code": "300", "msg": "用户名或密码错误"}

?run.py(存放收集测试用例代码)

import unittest
import unittestreport

suite = unittest.defaultTestLoader.discover('cases')
runner = unittestreport.TestRunner(suite)
runner.run()

?运行run.py后会自动生成report/目录,demo.log内会存入日志信息

2021-10-15 10:25:01.946 | ERROR    | test_login:test_login:27 - 用例测试失败
2021-10-15 10:25:01.948 | ERROR    | test_login:test_login:27 - 用例测试失败

?注意:

在test_login.py下如果调用logger.py下的get_logger函数,日志文件会多产生信息

?因为在执行第二个失败测试用例时,第一次写那支笔也存在,第二个失败用例就打印了二次

这个问题解决方法就是,导入logger.py下的调用函数的变量

?

?修改后日志信息是正常的

面试题:你的自动化测试框架是怎么搭建的?你的自动化测试框架包含了什么内容?

你们公司自动化测试怎么做的?

回答:

分层设计:不周的内容分开放到相应模块,好维护

每个包/模块分别处理什么问题:

--?run.py?收集所有测试用例

--?cases/存放所有的测试用例

--?report/目录存放所有测试报告

--?common/通用模块,存放excel,配置文件,日志等

解决了哪些接口自动化测试的问题:

--?数据驱动

--?数据库断言

-- 数据提取

--?动态参数替换

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-10-15 11:58:54  更:2021-10-15 12:01:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:44:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码