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)