• python面试题


    1、token过期如何使用装饰器处理

    先进行登录,然后在登录函数返回token
    在使用接口函数调用pytest.fixture()装饰器,将登录接口的返回值拿到

    2、pytest运行原理

    py文件以test开头或结尾
    类以test开头或结尾,不能有init方法
    方法以test开头或结尾

    3、类方法参数值的传递有几种方法

    位置参数
    关键字参数
    默认参数
    不定长参数(可变参数)
    参数组合,解包

    4、pytest参数化作用域

    pytest有三种传参方式,主要用到前两种

    @pytest.mark.parametrize()装饰器方式进行参数化
    pytest.fixture()方式进行参数化,fixture装饰的函数可以作为参数传入其他函数
    conftest.py文件中存放参数化函数,可作用于模块内的所有测试用例

    @pytest.fixture()有一个scope参数,并且有五个作用域级别
    scope说明:
    function 默认值,函数或方法级别被调用,当函数执行结束后,fixture则被销毁
    class 类级别调用一次,当类中的最后一个测试函数执行结束后,fixture则被销毁
    module 模块级别(每一个.py文件)调用一次,当模块中最后一个测试函数执行结束后,fixture则被销毁
    package 包(一个文件夹下的.py文件)级别调用一次,当包中最后一个测试函数执行结束后,fixture则被销毁
    session 多个文件调用一次,当多文件中最后一个测试函数执行结束后,fixture则被销毁

    5、编写用例excel表格里data数据参数化处理

    ‘’’
    如果想在python中处理excel文件,是需要专门模块
    xlrd模块使用:
    1、安装xlrd模块:pip3 install xlrd
    2、导包
    3、使用xlrd模块得方法打开excel文件
    4、读取其中一个sheet页数据
    5、获取某一行数据:row_values(0)/col_vaules(0)
    6、获取行数或者列数:nrows/ncols
    7、使用for循环遍历每一个单元格数据
    for i in range(总行数):
    print(table.row_values(i)[0])
    ‘’’

    import xlrd
    from selenium import webdriver
    import  time
    #使用xlrd模块方法打开excel文件
    data = xlrd.open_workbook('date.xlsx')
    table = data.sheets()[0]
    nrow= table.nrows
    ncols=table.ncols
    print(nrow)
    for i in range(nrow):
        print(table.row_values(i)[0])
        # 创建浏览器对象
        driver = webdriver.Chrome()
        driver.get('https://mail.163.com/register/index.htm?from=163mail&utm_source=163mail')
        # 注册用户名
        driver.find_element_by_xpath('//*[@id="username"]').send_keys(table.row_values(i)[0])
        driver.find_element_by_xpath('//*[@id="password"]').send_keys(table.row_values(i)[1])
        driver.find_element_by_xpath('//*[@id="phone"]').send_keys(table.row_values(i)[2])
        driver.find_element_by_xpath('/html/body/div[2]/div/div/div[2]/div[2]/div[4]/span').click()
        driver.find_element_by_xpath('/html/body/div[2]/div/div/div[2]/div[2]/div[5]/a[1]').click()
     
        # 先设置一下延迟时间
        time.sleep(2)
        # 需要设置断言
        exUrl = "https://mail.163.com/"
        actUrl = driver.current_url
     
        if exUrl == actUrl:
            print("注册成功,正向用例成功")
        else:
            print("注册失败,注册用例不通过")
        # 设置进入下一步时间
        time.sleep(2)
        # 退出
        driver.quit()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    6、请求返回的数据中Null怎么转化成python识别的字符串

    在一个没有接口文档的自动化测试中,只能通过抓包及查日志查看发送的信息,其中有一个接口发送的信息如下:
    “enable”: true, “new_size”: null,

    以为null就是个字符串,直接将请求拼接成下面格式:
    “enable”: true, “new_size”: “null”,
    发现发送错误,我们换换,既然是为null,就是为空
    enabl": true, “new_size”: ‘’,
    再次发送,还是错误

    其实,python与其它语言不一样,null即为none
    python中none就是null,所以要传None
    enable": true, “new_size”: None,
    即可发送成功

    7、python发送的数值类型怎么跟从数据库中查询出来的数据转换

    注意:不对mysql查询出的数据做任何转换,返回数据为‘tuple’,这时是不能直接供接口校验使用的,需要进行数据转换

    1、tuple转str:

    after_testdata=str(testdata)#转换成str类型

    2、查询数据库数据转换为list:

    #把数据库里取出来的数据,转换成list格式
    listdata=[]
    for row in info:
    listdata.append(row[0])
    return listdata

    3、查询数据库数据转换为json:

    jsondatar = json.dumps(jsonData)

  • 相关阅读:
    Java 面试题大集合,2019最新最常见面试题加答案
    【Nov 21st to 27th 】Personal work record
    腾讯薪酬改革:晋升不再直接调薪;iPhone 4S 和 6S 将被列入过时产品;Perl 5.36.0发布|极客头条
    vue学习(5)vue高阶slot插槽使用
    游戏中的-雪花算法
    如何获取combinations(a, 2)的结果,只能变量一遍,非常地花费时间。
    PX4模块设计之十二:High Resolution Timer设计
    【Matlab笔记_16】yyyy-MM-dd HH:mm:ss的datetime格式拆分为yyyy-MM-dd日期部分和HH:mm:ss时间部分
    关于日期与时间在代码开发中的应用(js中Date方法)
    Java笔记——文件操作I/O 01
  • 原文地址:https://blog.csdn.net/weixin_44688529/article/details/126690900