1. 列表、元组、字典的区别
列表是可变的有序集合,元组是不可变的有序集合,而字典是无序的键值对集合,其键是唯一的.
2. 什么是装饰器?
装饰器是为已经存在的函数或者对象添加额外的功能
数据参数化(Parameterization): 使用装饰器来提供不同的测试数据,对同一接口进行多次测试。
@pytest.mark.parametrize("test_input,expected", [("data1", "result1"), ("data2", "result2")]) def test_api(test_input, expected): assert my_api_function(test_input) == expected
@pytest.mark.smoke
3. 什么样的用例适合自动化?
a. 功能稳定
b.需要在多平台运行
c.界面稳定
d.不依赖外部设备
e.大数据量
4. 面对上传文件如何实现自动化用例
编写自动化测试用例来上传文件通常涉及到模拟文件选择和提交的过程。以下是一个使用Python的requests库和selenium库分别实现文件上传的简单示例:
使用requests库上传文件
如果接口支持HTTP请求,并且文件上传是通过简单的multipart/form-data格式实现的,你可以使用requests库编写自动化测试用例。
import requests
def test_file_upload():
url = 'http://example.com/upload' # 替换为实际的URL
file_path = '/path/to/your/file.txt' # 替换为你要上传文件的路径
with open(file_path, 'rb') as file:
files = {'file': (file.name, file, 'text/plain')}
response = requests.post(url, files=files)
assert response.status_code == 200
# 根据实际情况编写其他断言,例如检查返回的内容是否符合预期
test_file_upload()
5.Python类方法、类实例方法、静态方法的区别
在Python中,类方法(Class Method)、实例方法(Instance Method)、静态方法(Static Method)是类的三种不同类型的方法,它们在使用和行为上有所区别:
实例方法(Instance Method)
self
,它代表类的实例。class MyClass:
def instance_method(self):
return 'instance method called', self
obj = MyClass()
print(obj.instance_method()) # 通过实例调用实例方法
2. 类方法(Class Method)
@classmethod
定义的,它们的第一个参数是cls
,代表类本身。class MyClass:
@classmethod
def class_method(cls):
return 'class method called', cls
print(MyClass.class_method()) # 通过类调用类方法
obj = MyClass()
print(obj.class_method()) # 通过实例调用类方法
3. 静态方法(Static Method)
@staticmethod
定义的,它们不需要默认的self
或cls
参数。class MyClass:
@staticmethod
def static_method():
return 'static method called'
print(MyClass.static_method()) # 通过类调用静态方法
obj = MyClass()
print(obj.static_method()) # 通过实例调用静态方法
下面是关于它们的简要比较:
理解这三种方法的不同之处有助于更好地组织代码和实现面向对象编程的概念。
6. Python中,*arg和*kwarg分别代表什么含义,都有哪些作用?
在Python中,*args
和**kwargs
是两种常见的参数传递机制,用于在函数调用时接收不定数量的参数。
*args
用于函数定义中,它允许函数接收任意数量的位置参数(positional arguments),这些参数被打包进一个元组(tuple)。**kwargs
用于函数定义中,它允许函数接收任意数量的关键字参数(keyword arguments),这些参数被打包进一个字典(dictionary)。7.JSON和dict的区别
JSON(JavaScript Object Notation)和Python中的字典(dict)有以下主要区别:
数据格式与数据类型:
dict
是一种内置的数据类型,用于存储键值对的集合,其中键必须是不可变类型,如字符串、数字或元组。使用上下文:
dict
是Python中的核心数据结构,用于存储和处理程序内部的数据。语法规则:
"
包裹。'
或双引号"
包裹。数据类型映射:
null
。None
而不是null
。解析与转换:
json
模块。json.loads()
函数可以将JSON字符串解析为一个Python字典,而json.dumps()
函数可以将Python字典转换为JSON字符串。文件扩展名:
.json
扩展名的文件中。.py
文件中。一个简单的例子来说明JSON字符串和Python字典的转换:
import json
# Python字典
python_dict = {
"name": "Alice",
"age": 25,
"is_student": True
}
# 将Python字典转换成JSON字符串
json_string = json.dumps(python_dict)
print(json_string) # 输出:{"name": "Alice", "age": 25, "is_student": true}
# 将JSON字符串转换回Python字典
python_dict_from_json = json.loads(json_string)
print(python_dict_from_json) # 输出:{'name': 'Alice', 'age': 25, 'is_student': True}
总的来说,尽管JSON和Python字典在语法上看起来相似,它们却是用于不同目的的两种不同的概念:JSON是一种标准化的数据格式,而Python字典是一种Python内置的数据结构。
8. 自动化测试的作用:
提高效率, 回归测试时更加方便; 提高质量
兼容性测试, 专项/非功能测试, 自动化探索测试