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

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

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

-- 入口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_workbookdef 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 loggerdef get_logger(file):logger.add(sink=file, encoding='utf-8')return loggerlog = get_logger(r'E:\lemon\task_211012\common\log\demo.log')

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

import yamldef 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 unittestreportsuite = 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,配置文件,日志等

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

-- 数据驱动

-- 数据库断言

-- 数据提取

-- 动态参数替换

Python框架模型搭建相关推荐

  1. 【Python自动化测试20】接口自动化测试框架模型搭建

    文章目录 一.前言 二.框架搭建流程 2.1 项目创建 2.2 README文件 2.3 .gitignore文件 2.4 什么是测试框架? 2.5 分层设计 2.6 框架搭建 2.6.1 公用目录( ...

  2. 接口自动化测试之框架模型搭建

    一.前言 小伙伴们大家好呀,今天笔者给大家带来了一篇关于python接口自动化测试的文章,这篇文章主要讲解Python接口自动化测试框架模型的搭建,主要介绍如何设计框架,以及基础的框架运行等,话不多说 ...

  3. 前几行 python_调包侠神器2.0发布,Python机器学习模型搭建只需要几行代码

    萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI Python开源机器学习建模库PyCaret,刚刚发布了2.0版本. 这款堪称「调包侠神器」的模型训练工具包,几行代码就能搞定模型编写.改进 ...

  4. 使用python框架Django搭建web应用

    一.Django简介 1. web框架介绍 具体介绍Django之前,必须先介绍Web框架的概念. Web框架: 别人已经设定好的一个Web网站模板,你学习它的规则,然后"填空"或 ...

  5. 如何搭建python框架_从零开始:写一个简单的Python框架

    原标题:从零开始:写一个简单的Python框架 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 你为什么想搭建一个Web框架?我想有下面几个原因: 有一个 ...

  6. python利器app怎么查文献-科研人必备:一个工具搞定文献查阅、数据分析、模型搭建...

    原标题:科研人必备:一个工具搞定文献查阅.数据分析.模型搭建 写论文有多难?这首诗形容得好: 进入学校先选题,踌躇满志万人敌:发现前辈都做过,满脸懵逼加惊奇. 终于找到大空白,我真是个小天才:左试右试 ...

  7. python django框架分析_Django框架模型简单介绍与使用分析

    本文实例讲述了Django框架模型简单介绍与使用.分享给大家供大家参考,具体如下: ORM介绍 ORM Object relational mapping 对象关系映射 把面向对象中的类和数据库表一一 ...

  8. Python 框架 之 Django MVT 下的 M 的 模型的简单介绍和使用

    Python 框架 之 Django MVT 下的 M 的 模型的简单介绍和使用 目录

  9. python学习第6天---django框架---模型类及数据库操作

    python学习第6天---django框架---模型类及数据库操作 目录 文章目录 1.字段与选项 2.查询函数 3.查询集 4.模型类之间的关系 4.1.对应关系 4.2.关联查询 5.模型管理器 ...

最新文章

  1. 《未来企业效率白皮书》
  2. vue-:class的几种使用方式
  3. springmvc 组合注解
  4. 使用.NET Core优雅获取并展示最新疫情数据
  5. layui tree 加载慢_图片太多,加载慢,我用了layui里的方式,放在服务器后还是太慢!怎么解决???有没有什么优化的技巧???...
  6. 青书学堂计算机科学与技术,青书学堂考试 答案2019佳木斯信息计算机.doc
  7. iOS Crash常规跟踪方法及Bugly集成运用
  8. python批量创建实例_Django批量创建Model实例
  9. [Swift]LeetCode229. 求众数 II | Majority Element II
  10. Atitit.mysql oracle with as模式临时表模式 CTE 语句的使用,减少子查询的结构性 mssql sql server..
  11. 网络冗余备份之浮动路由
  12. android 自动发短信的代码,Android点击按钮时自动发送短信
  13. 2.5导入和混合配置 P61 Spring实战 第四版
  14. java之简易生成彩色二维码实践
  15. 数据库笔记--常见sql操作
  16. ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)的解决方法。
  17. CA 认证过程及 https 实现方法
  18. Java实现hanoi塔
  19. ios底部栏设计规范_IOS界面设计尺寸标准规范
  20. 简单模拟快递单号查询页面展示

热门文章

  1. 程序员必备:高能开发工具(IDE)强势推荐
  2. vue项目webpack配置全局变量
  3. Python中的.get()函数
  4. 血氧饱和度血氧仪方案
  5. idea断点突然变灰色及debugger模式缓慢
  6. Redis的哨兵模式
  7. vue用input调起手机摄像头录制视频
  8. Joomla模板制作教程:模块
  9. 计算机二级C语言与专升本编程题(入门级),用函数isprime(x)判断[n,m](n<m)之间所有的素数,并求其和
  10. C++ 开发环境其实挺难搞的(上)