当前位置: 首页 > news >正文

python自动化面试问题——关于python

1、如何做自动化测试,或者结合你的项目说一下你的自动化测试是怎么做的,或者你的自动化测试目录结构是怎么样的?

答:面试官你好,我使用的pycharm进行创建项目,创建好之后呢,使用PO模式创建目录结构,创建了common目录用来保存公共方法及公共配置,创建data目录用于存储数据,我当时使用的测试数据是excel格式的数据,创建log目录用于存放错误日志,用例成功失败的截图,保存测试报告;创建pages用来保存页面类。创建testcases用来保存测试用例。创建readme用来对项目进行说明。

在common目录下我会创建getdata.py文件用来获取测试数据,创建report.py文件来进行定义logger记录器、生成测试报告以及定义截图函数等。在pages目录下,创建基础的页面类和其他页面类的py文件,在基础页面类中我主要放的是打开浏览器关闭浏览器的操作以及定位元素、获取弹出框文本信息等操作,其他页面类(结合你项目负责的模块进行说),主要是成功失败的断言验证,截图操作等,都继承了基础页面类的方法。在testcases目录下创建了测试用例的py文件,我当时使用的框架是unittest,在测试用例类的py文件中,使用的是ddt实现数据驱动,我导入了ddt,data和unpack模块,在测试类的前面我使用了@ddt,在测试用例方法前面我使用了@data进行传入测试数据(把参数当成是测试数据,参数可以是单个值、列表、元祖、字典),使用了@unpack进行解包(将元组或者列表解析成多个参数)。(setUp中创建各对象,写日志,登录,检查是否登录成功,截图,异常处理,这里可以不用说,问到了就说)

在run.py文件中使用一个变量指定所有的测试用例目录,然后采用unittest.defaultTestLoader.discover方法进行批量添加测试用例,然后调用Report里面生成测试报告的方法将批量添加的测试用例的测试套件当作参数进行传递。

2、python的路径如何进行拼接?

导入os模块,使用os.path.join进行拼接,比如

path = os.path.join("folder", "subfolder", "file.txt")

使用from pathlib import Path中的Path模块进行拼接

# 将路径转为当前系统的正确格式
path = Path("some\\mixed/slashes.txt").resolve()
print(path)  # 自动转换为系统格式

3、python如何拼接两个文件?

第一种方式:

import shutil

def merge_with_shutil(file1, file2, output_file):
"""使用 shutil 高效合并文件"""
with open(output_file, 'wb') as out:
# 复制第一个文件
with open(file1, 'rb') as f1:
shutil.copyfileobj(f1, out)

# 复制第二个文件
with open(file2, 'rb') as f2:
shutil.copyfileobj(f2, out)

# 使用示例
merge_with_shutil('data1.bin', 'data2.bin', 'full_data.bin')

第二种方式:追加合并(多次合并)

def append_file(source, destination):
"""将一个文件追加到另一个文件末尾"""
with open(source, 'rb') as src, \
open(destination, 'ab') as dst:  # 'a' 表示追加模式
shutil.copyfileobj(src, dst)

# 使用示例:分多次合并多个文件
append_file('log1.txt', 'all_logs.txt')
append_file('log2.txt', 'all_logs.txt')
append_file('log3.txt', 'all_logs.txt')

第三种方式:合并多个文件,采用pandas的方式

import glob

import pandas as pd

# 获取所有CSV文件
all_files = glob.glob('*.csv')

# 读取并合并所有文件
df_list = [pd.read_csv(f) for f in all_files]
result = pd.concat(df_list, ignore_index=True)

http://www.lryc.cn/news/584229.html

相关文章:

  • Using Spring for Apache Pulsar:Transactions
  • Alibaba Druid主要配置
  • WiFi技术深度研究报告:从基础原理到组网应用与未来演进
  • 快速上手MongoDB与.NET/C#整合
  • 跨网文件交换?内外网文件交换十大方法构建安全合规的数据传输通道
  • XSS(跨站脚本攻击)
  • 3.9 spring的mybatis数据库数据回弹以及下划线,驼峰转换
  • 【音视频】TS协议解析
  • 在vscode中和obsidian中使用Mermaid
  • SSRF(ctfshow)
  • 生成式人工智能实战 | 自注意力生成对抗网络(Self-Attention Generative Adversarial Network, SAGAN)
  • Java并发编程中的StampedLock详解:原理、实践与性能优化
  • UI前端大数据可视化实战策略:如何设计交互式数据探索界面?
  • Spring AI Alibaba(2)——通过Graph实现工作流
  • 异步I/O库:libuv、libev、libevent与libeio
  • Ubuntu基础(Python虚拟环境和Vue)
  • 输入框过滤选项列表,el-checkbox-group单选
  • 案例分享--福建洋柄水库大桥智慧桥梁安全监测(二)之数字孪生和系统平台
  • Qt开发:QtConcurrent介绍和使用
  • 【网络】Linux 内核优化实战 - net.ipv4.tcp_max_orphans
  • 如何发现Redis中的bigkey?
  • 数据库复合索引设计:为什么等值查询列应该放在范围查询列前面?
  • ip地址可以精确到什么级别?如何获取/更改ip地址
  • 第1讲:C语言常见概念
  • 实训八——路由器与交换机与网线
  • TCP传输控制层协议深入理解
  • 20250710【再来一题快慢指针】Leetcodehot100之141【首个自己一遍pass】今天计划
  • 【算法笔记】6.LeetCode-Hot100-链表专项
  • 数据跨越信任边界及修复方案
  • 通过vue如何利用 Three 绘制 简单3D模型(源码案例)