第三周习题
23、Java的继承与Python的继承有什么区别
java:单继承
python:多继承
24、如果子类重写了父类的方法,那么实例化子类后,调用重写后的方法,调用的是子类的方法还是父类的方法
当子类重写父类的方法,子类实例化后调用父类的方法
继承原则:
前提:单继承
原则:实例化子类,子类对象调用的方法和父类方法重名,优先考虑子类
class Person(object): def __init__(self, name, age): self.name = name self.age = age def show(self): print('name is {0},age is {1}'.format(self.name, self.age)) class Work(Person): def __init__(self, name, age, salary): # super()的方法继承父类的实例属性 # super().__init__(name, age) Person.__init__(self, name, age) self.salary = salary def show(self): print('name is {0},age is {1},salary {2}'.format(self.name, self.age, self.salary)) objPerson = Work(name='admin', age=19, salary=1000.1) objPerson.show()
UI自动化测试:
1、常用的元素定位有那几种方法,请举例说明
八种方法
id
from selenium import webdriver from selenium.webdriver.common.by import By import time as t '''id的定位''' driver=webdriver.Chrome() driver.get('http://www.baidu.com') driver.find_element_by_id('kw').send_keys("Hellow World") t.sleep(5)
name
driver=webdriver.Chrome() driver.get('http://www.baidu.com') driver.find_element_by_name('wd').send_keys("Hellow World") t.sleep(5)
class name
driver=webdriver.Chrome() driver.get('http://www.baidu.com') driver.find_element_by_class_name('s_ipt').send_keys("Hellow World") t.sleep(5)
xpth
driver=webdriver.Chrome() driver.get('http://www.baidu.com') driver.find_element_by_xpath('//*[@id="kw"]').send_keys("Hellow World") t.sleep(5)
css
driver=webdriver.Chrome() driver.get('http://www.baidu.com') driver.find_element_by_css_selector('#kw').send_keys("Hellow World") t.sleep(5)
LINK_TEXT
driver=webdriver.Chrome() driver.get('http://www.baidu.com') driver.find_element_by_link_text('直播').click() t.sleep(5)
.PARYIAL_LINK_TEXT
driver=webdriver.Chrome() driver.get('http://www.baidu.com') driver.find_element_by_partial_link_text('播').click() t.sleep(5)
tag_name
driver=webdriver.Chrome() driver.get('http://www.baidu.com') tag=driver.find_elements_by_tag_name('input') tag[7].send_keys("无涯教育") t.sleep(5) driver.close()
2、单个元素定位与多个元素定位的区别是什么?
单个元素和多个元素定位定位是element后面有没有s
单个元素element 多个元素elements
3、如果是iFrame的框架,如何来定位里面的元素属性的对象
ifame里面的元素先得进入ifame框架中在进行定位
id定位:
driver.swich_to.frame('.....')
索引的方法:
driver.swich_to.frame(0)
4、怎么理解页面对象设计模式
1.创建可以跨多个测试用例共享的代码:
2.减少重复代码的数量
3.如果用户界面发生变更后,只需要在一个地方维护就可以了。
5、怎么理解显式等待和隐式等待
显示等待:显示等待不会等页面加载完,它会在页面加载的同时,就开始不断的找元素,只要找到元素并且满足设定的条件,直接执行下一步。
隐式等待:隐式等待等页面加载完成,在去进行下一个查询找到了进行下一个,如果没有找到继续找直到设定的时间过了,在进行下一步。
6、在测试中遇到多窗口,具体怎么解决,请描述具体的步骤和编写具体的案例代码
1、循环所有的窗口
2、判断是否是当前窗口
3、如果不是,切换到新的窗口
4、在新的窗口进行操作
5、关闭新的窗口
6、切换到最开始窗口
driver=webdriver.Chrome() driver.maximize_window() driver.get('https://mail.sina.com.cn/') nowHandler=driver.current_window_handle #点击忘记密码 driver.find_element_by_link_text('忘记密码?').click() allHandler=driver.window_handles for handler in allHandler: if handler!=nowHandler: driver.switch_to.window(handler) url=driver.current_url print(url.endswith('entry=freemail')) assert url.endswith('entry=freemail')==True # driver.close() # driver.switch_to.window(nowHandler) t.sleep(3) # driver.quit()
单元测试框架:
1、unittest与pytest的框架
2、unittest的常用组件有哪些
TestCase:测试用例,测试用例里面会有很多测试方法,是单元测试中最小维度的测试行为
Test Fixure:测试固件,测试固件是执行测试时的准备工作和收尾工作(打开和关闭浏览器,链接和关闭数据库)
TestSuite:测试套件,是测试用例的集合
TestRunner:测试运行器,运行测试用例
TestReport:将测试结果呈现给用户,生成测试报告
3、unittest中怎么理解测试固件
在unittest中测试固件依据?法可以分为两种执??式,?种是测试固件只执??次,另外?种是测试固件每次都 执?,下?依据具体的案例来讲解?者。
setUp():最开始执行
tearUp():最后执行
4、怎么理解setUp(),tearDown()与类测试固件的测试
setUp() 测试固件只执行一次
tearDown() 测试固件每次均执行
5、在unittest测试框架中,加载所有的测试模块使用到的方法是什么?具体参数是什么?
用到的方法:unittest.main()
具体参数:verbosity=2
6、在unittest中使用那个库来生成对应的测试报告
report:存储测试报告
7、一个完整的测试用例包含哪些步骤
测试需求--->分析需求(画思维导图)-->编写用例-->划分用例的优先级
8、怎么理解参数化
解决的问题:
测试进行相同的步骤,只是输入的数据不同,其他操作都是一样的,这样需要写很多测试用例,参数化可以解决这种问题,让代码更加简洁。
4、测试按阶段划分,主要分为那几个阶段
软件测试可分为单元测试、集成测试,系统测试和验收测试。
5、怎么理解等价类和边界值
等价类
例:1,001,0001
2,002,0002
边界值
例:
1~99的范围
1和99就是两个边界
6、请描述一个完整的测试流程