1.Python有哪些应用范围?

一个多功能的编程语言:开发Web应用程序、网络爬虫、API开发;数据分析和科学计算;自动化和脚本编写:Python易于学习和使用,适合编写各种自动化脚本,如系统管理、任务调度和文件处理。

2.Python中常用数据类型?

  1. 整数类型int

  Python中内置了用于转换数据进制的函数:

    ü   bin():转换为二进制数据,以“0b”或“0B”开头

    ü   oct():转换为八进制数据,以数字“0o”或“0O”开头

    ü   int():转换为十进制数据

ü   hex():转换为十六进制数据,以“0x”或“0X”开头

  1. 浮点型:float
  2. 字符串类型:运算符:+ * [],[:],in,not in,r/R
  3. 布尔类型:(bool)是一种特殊的整型,其值True对应整数1,False对应整数0。
  4. 空值类型

3.Python中的单引号和双引号有什么区别?

本质上没有太大区别,但是嵌套使用时需要进行区分,如果字符串本身包含引号,那么可以使用另一种引号来定义字符串,以避免冲突。例如,使用双引号定义字符串时,可以在字符串中使用单引号,而不需要进行转义,反之亦然

4.Python中列表的常用方法?

访问列表使用索引和切片两种方式,添加使用:append,insert排序使用sort删除使用pop或者remove

5.Python中字典的常用方法?

字典的访问使用get,添加和修改使用updata,删除使用pop或者popitem,clear

6.Python中数据类型转换函数?

 int():将其他类型转换成整数

• float():将其他类型转换成小数

• str():将其他类型转换成字符串

bool():将其他类型转换成布尔型

7.Python中是否有main函数?

在Python中没有"main"函数的概念,但是为了使代码更具可读性和可维护性,通常会将主要的执行逻辑封装在一个函数中,命名为"main"或其他合适的名称。这个函数可以被调用来执行主要的程序逻辑

8.Python中什么是lambda函数?

匿名函数是一类无须定义标识符的函数,它与普通函数一样可以在程序的任何位置使用。Python中使用lambda关键字定义匿名函数,他适用于函数中只有一行代码

9.Python中*args和**kwargs什么含义?

*args是用来传递可变数量的非关键字参数(位置参数)给一个函数。它允许你传递任意数量的参数给函数,这些参数会被封装成一个元组

**kwargs是用来传递可变数量的关键字参数给一个函数。它允许你传递任意数量的关键字参数给函数,这些参数会被封装成一个字典

10.Python中OOPS是什么?

OOPS代表面向对象编程,将程序设计看做是一组对象的交互,每个对象都是一个实例,具有自己的属性和方法,封装继承多态

11.Python中的self有什么含义?

代表对象自身

12.Python中__init__有什么用?

构造方法(即__init__()方法)是类中定义的特殊方法,该方法负责在创建对象时对对象进行初始化。可以分为无参构造方法和有参构造方法

(1)当使用无参构造方法创建对象时,所有对象的属性都有相同的初始值。

(2)当使用有参构造方法创建对象时,所有对象的属性可以有不同的初始值。

13.Python中如何进行MySQL的增删改查?

使用PyMySQL库进行MySQL数据库操作。包括安装PyMySQL库、连接MySQL数据库、执行MySQL增、删、改、查语句以及关闭MySQL连接等

安装PyMySQL库:pip install pymysql

导入PyMySQL库:import pymysql

Connect():连接MySQL数据库

cursor():创建游标对象

execute():执行MySQL语句

commit():将更改提交到数据库

rollback():进行数据回滚

fetchall():获取查询结果

close():关闭MySQL连接和游标

14.Python中如何操作csv文件?

导入包:import csv

Csv.reader(f):从 csv 文件中,读取数据

Csv.writer(list):对 csv 文件中,写入数据

15.Python中如何操作Json文件?

导入包:import json

json.load(f):从 json 文件中,读取数据,转成 python 的数据类型(重点掌握

json.dump(data,f):把 python 的数据类型,转成 json 格式,并写入到文件中(重点掌握

16.Python中如何操作yaml文件?

安装 PyYAML 库:pip install pyyaml

导入包:import yaml

读取 YAML 文件:使用 yaml.load() 函数从 YAML 文件中加载数据。

写入 YAML 文件:使用 yaml.dump() 函数将数据写入 YAML 文件。

17.Python自动化里通常使用哪些类型文件?举例说明文件操作方法?

Csv文件和yaml文件和json文件

读取:

with open(r'作业/username.csv') as f:

    f_csv_reader = csv.reader(f)

    next(f_csv_reader)

    for data in f_csv_reader:

        print(data)

写入:f_csv_writer = csv.writer(f) 列表格式

    f_csv_writer.writerows(user_list)

18.Python的常用包有哪些?举例说明?

Time中有个sleep常用于添加思考时间

取一个小于1的随机数random.random()

Selenium 问题一览

19.自动化测试的流程?

(1)编写自动化测试计划

(2)编写自动化测试方案

(3)编写自动化测试用例(如果是正向测试,可以省略;如果是正反向测试,一般需要编写用例)

(4)评审测试用例

(5)自动化框架的设计(自动化脚本的开发)

(6)脚本执行

(7)提交BUG

(8)编写自动化测试报告

20.自动化测试的工具?

Selenium,,appnium,jmeter,Loadrunner,appnium

21.自动化脚本设计的四大模式?

线性模型,模块化模型,数据驱动,关键词驱动

22.自动化测试在项目中的应用范围?

冒烟测试(正向测试)

    功能测试(正向测试、反向测试)

    回归测试(正向测试、反向测试)

    上线测试(正向测试)

    验收测试(正向测试

23.Selenium WebDriver的8种定位方式?

id,name,tag,class,css,xpath,link,partial Link

24.Selenium WebDriver如何操作鼠标?

鼠标操作的常用方法:

perform() 执行所有ActionChains中存储的行为

double_click() 鼠标左键双击

context_click() 鼠标右键单击

move_to_element() 鼠标悬停

drag_and_drop(source,target) 鼠标拖动

key_down() 键按下

key_up() 键抬起

实现思路:

需要引入ActionChains类

然后定位相关元素

初始化ActionChains()对象,调用相关鼠标操作方法,然后执行

25.Selenium WebDriver如何操作键盘?

键盘操作的常用方法:

  1. send_keys(Keys.BACK_SPACE) 删除键
  2. send_keys(Keys.SPACE) 空格键
  3. send_keys(Keys.TAB) Tab键
  4. send_keys(Keys.ESCAPE) ESC键
  5. send_keys(Keys.ENTER) 回车键
  6. send_keys(Keys.CONTROL,"a") 全选
  7. send_keys(Keys.CONTROL,"c") 复制
  8. send_keys(Keys.CONTROL,"x") 剪切
  9. send_keys(Keys.CONTROL,"v") 粘贴

26.Selenium WebDriver如何实现等待?

元素等待的3种方法:

  1. WebDriverWait() 显式等待是针对某一个元素进行相关等待判定。
  2. implicitly_wait() 隐式等待不针对某一个元素进行等待,全局元素等待。默认参数的单位为秒。
  3. sleep休眠方法

27.Selenium WebDriver如何切换窗口?

多窗口切换的常用方法:switch_to.window()

  1. current_window_handle 获取当前窗口句柄
  2. window_handles 获取所有窗口句柄

28.Selenium WebDriver如何处理警告?

警告弹窗的常用方法:

  1. switch_to_alert().accept()
  2. switch_to.alert.accept() 建议这个

29.Selenium WebDriver如何操作上传文件?

上传文件的常用方式:

  1. 普通上传:普通的附件上传是将本地文件的路径作为一个值放在INPUT标签中,通过form表单将这个值提交给服务器
  2. 插件上传:一般是指基于Flash、JavaScript或者Ajax等技术实现上传功能

30.Selenium WebDriver如何关闭窗口?

关闭窗口的常用方法:

  1. quit() 退出相关的驱动程序和关闭所有的窗口
  2. Close() 关闭当前窗口。多窗口处理中,想要关闭其中的某个窗口,请使用这个方法

31.Selenium WebDriver如何实现窗口截图?

窗口截图的常用方法:

  1. get_screenshot_as_file() 截图函数
  2. save_screenshot() 截图函数

32.Selenium WebDriver如何实现滚屏?

滚动条操作的常用方式:

  1. Selenium 的 WebDriver 类库中并没有直接提供对滚动条进行操作方法,但是Selenium 提供了可调用 JavaScript 脚本的方法,所以我们可以通过 JavaScript 脚本来达到操作滚动条的目的。
  2. 另外,还可以调用鼠标和键盘操作,实现操作滚动条。在WebDriver中,关于鼠标操作的方法封装在ActionChains类中。关于键盘操作的方法封装在Keys中。

33.说一说测试框架Selenium、unittest、ddt、POM?

 - Selenium:是一种自动化Web应用程序测试工具,支持多种浏览器和编程语言,可以模拟用户在浏览器中的操作,如点击、输入、提交、跳转等等。

        - unittest:是Python内置的测试框架,基于类的测试框架,支持setUp()、tearDown()等多个测试方法,方便编写和运行单元测试用例。

- ddt:是一个Python第三方库,用于更方便快速的对测试用例进行参数化和批量执行。

- POM:四层分离,base_object基础层:元素定位;功能层:封装项目test_case用例层,data数据层。是一种Page Object Model的设计模式,将页面的元素、操作和页面类进行分离,提高了测试代码的可维护性、可扩展性和可重用性。

34.自动化测试验证码如何处理?

遇到验证码的常用方式:

  1. 去掉验证码
  2. 设置万能码
  3. 验证码识别技术(OCR)
  4. 记录cookie

35.项目里自动化测试如何判断是否执行成功?

设置断言

  1. 项目里自动化测试遇到哪些问题,如何解决的?

测试用例设计难度、测试环境搭建和维护、测试数据管理、自动化测试工具的稳定性和兼容性等等。要解决这些问题,需要借助于一些最好的实践,例如模块化设计测试用例、使用容器化技术管理测试环境、使用测试数据工厂生成测试数据、以测试驱动开发的思路进行自动化测试用例编写、引入合适的持续集成和自动化测试工具等等。同时,在解决问题的时候也需要注意调整流程、优化策略、逐步优化,确保自动化测试项目的顺利进行。

unittest问题一览

37.Python unittest可以作什么?

单元测试工具,可以用来管理自动化测试,设置断言管理测试用例,执行测试用例,生成报告

38.Python unittest断言的方法?

assertEqual(a, b): 判断a和b是否相等。如果不相等,测试失败。

assertNotEqual(a, b): 判断a和b是否不相等。如果相等,测试失败。

assertTrue(x): 判断条件x是否为真。如果为假,测试失败。

assertFalse(x): 判断条件x是否为假。如果为真,测试失败。

assertIs(a, b): 判断a和b是否为同一个对象。如果不是同一个对象,测试失败。

assertIsNot(a, b): 判断a和b是否不是同一个对象。如果是同一个对象,测试失败。

assertIn(a, b): 判断元素a是否在集合b中。如果不在,测试失败。

assertNotIn(a, b): 判断元素a是否不在集合b中。如果在,测试失败。

assertIsInstance(a, b): 判断对象a是否为类型b的实例。如果不是,测试失败。

assertNotIsInstance(a, b): 判断对象a是否不是类型b的实例。如果是,测试失败。

assertRaises(exc, fun, *args, **kwds): 判断函数fun在执行时是否会引发异常exc。如果不会引发异常,测试失败。

assertRaisesRegex(exc, s, fun, *args, **kwds): 类似于assertRaises,但是使用正则表达式来匹配异常消息。

39.Python unittest的TestCase 包含几类方法?

环境搭建:  setUp()

tearDown()

setUpClass()

tearDownClass()

断言方法:这些是用来检查测试结果的方法。Python的unittest模块提供了一些基本的断言方法,如assertEqual(), assertNotEqual(), assertTrue(), assertFalse()等。

其他常用方法:这些方法用于组织和运行测试。例如:

run()

skipTest(reason)

fail(msg)

failIf(condition, msg)

assertRaises(exc, msg)

assertRaisesRegexp(exc, re, msg)

子类必须实现:为了使TestCase能够工作,子类必须至少实现setUp()和run()方法。当然,实际的测试代码应当写在setUp()之后,run()之前。

40.Python unittest的TestCase 的执行顺序是?

根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0~9,A~Z,a~z。

41.Python unittest如何跳过TestCase ?

使用场景:在自动化测试过程中,经常会遇到功能阻塞、功能未实现、环境等一系列外部因素问题导致的一些用例执行不了,这时可以用到跳过 skip 用例,当然也可以注释掉或删除掉。

  1. unittest.skip(reason)
  2. unittest.skipIf(condition,reason) 条件为真,跳过测试
  3. unittest.skipUnless(condition,reason) 条件为假,跳过测试
  4. unittest.expectedFailure() 预期设置失败

重点掌握:unittest.skip(reason)

42.Python unittest如何预期TestCase 失败?

unittest.expectedFailure()  预期设置失败

43.Python unittest如何实现批量执行TestCase ?

1、首先,引入unittest包:import unittest

2、创建测试类:

测试类Test开头

3、封装测试环境UpDown类:

setUp():测试环境的准备

test():测试用例的方法test开头

tearDown():测试环境的准备

4、测试用例的执行:

unittest提供了全局的main()方法,可以方便的把一个单元测试模块变成可以做直接运行的脚本。

构造测试集(调用TestSuite()来创建测试套件,调用TextTestRunner()来执行测试套件。)

unittest提供了discover()来查找测试用例,创建测试套件,使用第三方包BSTestRunner()来执行测试套件,生成Html格式的报告

并且,需要添加合适的断言:

5、# 断言
text = self.driver.find_element(By.LINK_TEXT, '推送').text
self.assertEqual(text, result)

assertEqual、assertNotEqual、assertIn、assertNotIn