面试印象深刻的问题

1.pytest excel数据驱动生成测试用例,一个表格中有多个sheet(一个sheet为一个test_suite),使用yield源源不断的生成Test类,同时测试用例里面得到的测试类对象要不同(相同的话会覆盖上一个对象),,自动loadexcel表格,多个excel文件使用循环即可

def create_case(test_suite: dict):
    """
    接收从excel传来的多个测试套件的信息,并生成真正的测试用例
    :param test_suite:
    :return:
    """
    for suite_name,case_dict in test_suite.items():
        class Test:
            @pytest.mark.parametrize("case",case_dict.items())
            def test_(self,case):
                name = case[0]
                step_list = case[1]
                print(f"{name=}")
                print(f"{step_list=}")

        yield Test

test_dir = Path(__file__).parent
file_list = list(test_dir.glob("test_*.xlsx"))

_case_count = 0

for file in file_list:
    data = data_by_excel(file)
    for case in create_case(data):
        _case_count += 1
        globals()[f"Test{_case_count}"] = case

2.pytest显示等待和隐式等待的区别
1)隐式等待是全局性等待,并且可以随时更改,仅仅针对 find_element 方法生效,当超时没
找到元素时报错是 no_such_element
2)显式等待是针对单一元素或者一组元素进行设置,针对元素属性进行超时设置,针对 iframe
的切换进行超时设置,针对 alert 切换进行超时设置,针对 window 切换进行超时设置,自定义
超时的条件,当超时没满足条件时报错是 timeoutexception

3.selenium三大组件

        1)IDE:录制、自动生成测试用例

        2)webdriver:执行测试用例

        3)Grid:远程、分布式执行测试用例

4.pytest的ini文件中不能包含中文,如果包含中文将编码格式改成JBK

5.pytest.ini文件里设置改变发现用例规则时,指定用例文件夹(testpaths)的优先级最高(python_files,python_classes,python_functions)

6.pytest用例编辑分组用法

        1)在pytest.ini文件里设置

markers = 
    smoke:冒烟测试
    product_manage:商品管理

        2)在方法名上添加装饰器

@pytest.mark.smoke
def test_api(self):
    pass

@pytest.mark.product_manage
def test_api1(self):
    pass

        3)在pytest.ini添加运行参数

addopts = -m "smoke or product_manage"

7.json.loads()将字符串转化为字典,反序列化   json.dumps()字典转化为字符串,序列化

8.接口自动化时,接口参数导致接口名称样式改变问题:找到allure_pytest/listener.py修改96行

test_result.parameters.extend([Parameter(name=name, value=represent(value)) for name, value in params.items()])
test_result.parameters.extend([])

9.appium自动化测试时element.tag_name报错

logger.info(f"{loc}元素定位成功,{element.tag_name}({element.rect})")

原因:appium不支持element.tag_name

10.接口自动化为什么要封装统一请求

创建了一个session请求,如果想共用这个session就需要导包,导包的时候会将这个文件里的用例也导进来,就会出现用例重复执行的情况

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值