自动化测试面试(一)

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)是类的三种不同类型的方法,它们在使用和行为上有所区别:

  1. 实例方法(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定义的,它们不需要默认的selfcls参数。
  • 静态方法不能访问类属性或实例属性,它们是独立于类和实例的。
  • 静态方法可以通过类或其实例来调用,更像是与类捆绑的普通函数。
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)有以下主要区别:

  1. 数据格式与数据类型

    • JSON是一种轻量级的数据交换格式,基于文本,用于表示结构化数据,独立于语言。它使用人类可读的文本格式,类似于Python字典的语法。
    • Python的dict是一种内置的数据类型,用于存储键值对的集合,其中键必须是不可变类型,如字符串、数字或元组。
  2. 使用上下文

    • JSON通常用于不同系统或程序之间传输数据,如服务器和客户端之间的通信。
    • dict是Python中的核心数据结构,用于存储和处理程序内部的数据。
  3. 语法规则

    • JSON的键必须是字符串类型,并且用双引号"包裹。
    • Python字典的键可以是任何不可变类型,包括字符串、数字、元组等,字符串键可以用单引号'或双引号"包裹。
  4. 数据类型映射

    • JSON支持的数据类型有对象(object,类似Python中的字典)、数组(array,类似Python中的列表)、字符串(string)、数字(number)、布尔值(true/false)以及null
    • Python字典支持更广泛的数据类型作为值,包括自定义对象、函数等,而且支持None而不是null
  5. 解析与转换

    • 要在JSON字符串和Python字典之间转换,需要使用Python的json模块。json.loads()函数可以将JSON字符串解析为一个Python字典,而json.dumps()函数可以将Python字典转换为JSON字符串。
    • Python字典不需要转换就可以在Python代码中直接使用。
  6. 文件扩展名

    • JSON数据通常存储在具有.json扩展名的文件中。
    • Python字典作为Python代码的一部分,可以存在于任何.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. 自动化测试的作用: 

提高效率, 回归测试时更加方便; 提高质量

兼容性测试, 专项/非功能测试, 自动化探索测试

你可能感兴趣的:(面试,职场和发展)