自动化测试

目的:回归测试、大数据量测试、降低成本,提高效率。

条件:需求稳定、手工测试通过、周期较长、脚本复用、重复性工作多。

一、环境搭建

安装Python-->安装Selenium-->安装Chrome(IE关闭安全4个保护模式)-->安装WebDriver(…\Python\Python36)-->安装PyCharm-->解压phpfind.zip到D盘

二、元素定位

1、id---元素有id属性

2、name---元素有name属性

3、class_name---元素有class属性

4、css_selector---右键Copy selector

css定位方式:

1)两节点组合

a.目标节点

b1.有id属性

b2.有定位自身的祖先节点:唯一name属性/唯一class属性

2)增加新节点

css层叠样式:

a.“#”表示后面接的是id

b.“.”表示后面接的是class

c.前面没有符号表示标签名:a、div、span、input

d.name等其他属性的表示:[name="username"]

e.“>”的前面表示父元素

f.“>”的后面表示子元素

g.:nth-child(n)表示父元素的第n子元素

h.先写目标元素,再写一级一级的父元素

i.逐级删减至一两个,目标元素不能删减

5、link_text---标签对之间文本,必须是a标签

6、xpath---右键Copy XPath

7、tag_name---元素标签名,同标签名很多,不推荐

8、partial_link_text---标签对之间部分文本,必须是a标签

三、综合操作

1、click与submit

2、time.sleep与implicitly_wait

3、切换window与frame

4.1、find_element_by_*()选择一个页面元素,直接操作,不能用下标

4.2、find_elements_by_*()选择一组页面元素,不能直接操作,用下标

5、下拉框Select(driver.find_element_by_*()).select_by_index/value/visible_text()

6、复选框find_elements(By.NAME,'sex')[1]

find_element(By.XPATH,'//input[@value="1"]')

7、弹出框switch_to.alert.accept/dismiss

8、文件上传

1)上传文件控件<input type="file"

2)隐藏属性元素

a.style属性,display:none block,visibility:hidden visible

b.class属性,在元素标签中,通过class属性名字在css层叠样式表中找到class实现

9、日期readonly

10、html

a. input标签名,表示输入。type="text"文本输入框,type="submit"提交按钮

b. ul无序的列表un-order list

c. li列表中的一项list item

d. form表单,提交用户输入到服务器

四、设计模式

1、pageobject类

1)把一个网页的页面看做是类的一个对象

2)每个网页创建一个类,描述页面所有可执行操作

a.方法,可执行操作

b.属性:网址、元素

2.1、元素定位和操作封装到pageobject类中,网页变更,只修改pageobject类

2.2、测试用例和步骤封装到testcase类中,步骤变更,只修改testcase类

3、测试类继承unittest,对pageobject内部方法做单元测试

4.1、测试用例可以为每一行代码做注释,便于后期维护代码

4.2、可以看成是自己写的一个代码库,类似于selenium

五、测试框架

由一个或多个自动化测试基础模块、自动化测试管理模块、自动化测试统计模块等组成的工具集合。基础功能测试框架Selenium、管理执行框架Phoenix Framework。

1、类和对象,类是抽象的概念,对象是具体的事物,把具有相同特点的事物称为类。一般方法不能直接通过类来执行,先把类实例化,生成一个具体的对象才能执行方法。

2、类和方法,属性用来描述类的性质或特征,以名词为主self.driver;方法用来描述类的行为或动作,以动词为主login。

3、继承,类和类,父类声明的属性和方法,子类默认都具有,Object是所有类的父类。

class DanYuanTest(unittest.TestCase)

4、多态,动物猫叫喵狗叫汪

1)要有继承

2)父类引用指向子类对象

3)方法的重写

5、实现父类未实现的方法

1)def setUp(self): 执行测试用例之前的操作 driver=webdriver.Chrome()

2)def tearDown(self): 测试用例执行之后的操作 driver.quit()

6、写具体测试用例的方法,方法名必须以test开头

7、运行所有的测试用例,创建一个单独python文件,

if __name__ == "__main__":

unittest.TextTestRunner().run(unittest.defaultTestLoader.discover("./","dan_yuan*.py"))

8.1、成员变量,类内部有效,前面加self.

8.2、局部变量,在方法内部有效,在结构体内部有效,例如for循环声明i循环内部有效

9、优势

1)组织和执行测试用例

a. 一次性执行当前文件的所有测试用例unittest.main()

b. 一次性执行所有匹配的测试用例

b1. 找到匹配的测试用例

suite=unittest.defaultTestLoader.discover('./',pattern='test*.py')

b2. 执行一组测试用例unittest.TextTestRunner().run(suite)

2)丰富的日志和断言

共运行几条用例,花费时间,运行状态:pass测试通过、fail提交缺陷、error修改程序

self.assertIn()、self.assertEqual()

10、改进,所有测试用例类,都有setUp(),tearDown(),封装到中间类

转载于:https://www.cnblogs.com/stevehe/p/11502979.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值