上海 selenium 进阶作业 0707 (0718 更新课程重点)

课程重点

unittest的学习,是核心也是基础库
import unittest 需要导入后
新建立1个类,类和文件名字保持一致,并且不能是python以及你添加的其他类库的关键字。类需要继承unittest.TestCase 也是所有测试用例类继承的基本类

TestCase 类中定义四个方法 setUp(self),tearDown(self),setUpClass(cls),tearDownClass(cls)后面2个主要用到
加装饰器是在整个测试套件前执行一次初始工作。在最后执行一般关闭浏览器(释放内容)和做结尾的事情(后续介绍)
继承于unittest,其他函数需要以test__.py开始,执行顺序按ascii码规则,[A-Z][a-z]执行顺序后者高于前者

不同文件导入其他方法。
同个文件多个类,类里面多个成员方法(成员方法是testcase),不同类根据作用去分类。
unittest.main():在main函数为真的情况下,会执行当前文件下的所有可执行的testcase.不可执行(被跳过的)本周课程会介绍方式。
unittest.TestSuite()类是用来创建测试套件的。

其他异常类的描绘,把问题分段,比如有断言失败类型和导入库错误类型等。

try:
    #多用于导入绝对路径文件,一旦替换位置后可以直接定位到导入库错误信息。
    from selenium import webdriver
    import unittest
except ImportError as err:
    print(format(err))

基于unittest的断言:
assertEqual断言相等性
assertIn断言包含
assertIsInstance 断言前者和后者同1个类型
(新增)assertIsNone 断言结果是否是None,其实和断言是否是假差不多,扩充学习。
assert后面加Not是一种取反的做法。这里不常用。

unittest.TextTextRunner()通过run(suite)来运行,具体看作业,如何把多个类添加进去。

课程开始

伴随着selenium基础课杀青,开始了面向对象的selenium进阶课程的学习。学习内容的跨度会有点大。
学习核心知识点unittest.TestCase 运行顺序和断言方法
import unittest
类继承unittest.TestCase,不能同时继承object超类和unittest.TestCase。
setUp(),tearDown() 每个case前面执行setUp()和每个case后面执行tearDown(),单位都是一次。
setUpClass(cls),tearDownClass(cls) 类下面case集合,在第一个case前执行setUpClass(cls),最后一个case执行结束后执行tearDownClass(cls)
cls前必须要有@classmethod
结合课堂的实际运行的例子,如果有学员没敲完的,可以找其他学员寻求复制一份。

上午的基础断言assert 条件是否相等,如果断言失败会抛 AssertionError,如果相等就可以往下走

下午学习的继承unittest.TestCase
self.assertIn() 验证包含 self.assertNotIn()验证不包含
self.assertEqual() 验证对象相等 self.assertNotEqual() 验证对象不相等
self.assertIsInstance() 类型验证
正向验证用得比较多

第一项作业

作业:上午的Api知识点结合下午的断言,对2个任意网站完成练习,并且每个testcase不少于5个。比如使用上午的拿到title,当前网页地址,拿到返回的text,拿到源码。
并且温故下课堂上记事本.txt上写的内容。

把代码黏贴到回复中,如果有问题也注意表明。

from selenium import webdriver

driver =webdriver.Chrome() #配置环境变量就不用executable_path
url ="https://testerhome.com/"
driver.get(url) #访问网页
#结合下午学习到的,1个case会拥有不止1条断言 每个api注意完全一致是selenium库的内置
#driver.title 验证网页的title属性
#driver.page_source 网页源码里不同区域有唯一的特征,找到这个特征并且验证就可以判断是某个网页区域的
#driver.current_url 验证当前网页url

#补充点 driver是webdriver.Chrome()返回的对象
#driver.refresh 刷新,���页刷新后 思考下需要验证什么。
#driver.back() 需要有2个网页地址,从第二个回到前面一个
#driver.forward() 需要回到上个网页地址

**作业需要最迟在周五之前完成练习**

第二项作业

**请提交至邮箱**:atie@testerhome.com

作业:写下自己未来半年的职业规则或者工作规划
下课之前有解释这个作业,是定一个可行的目标和未来半年提升的计划
本作业提交到邮箱