找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
实例方法、静态方法、类方法

1.参数的区别
实例方法:定义实例方法时最少有一个形参--实例对象,通常self
类方法:定义类方法时最少有一个形参--类的对象,通常用cls
静态方法:定义静态方法时可以不用定义形参

2.方法定义时添加装饰器的区别
实例方法:不需要添加装饰器
类方法:需要装饰器--》@classmethod
静态方法:需要添加装饰器--》@staticmethod

3.调用
实例方法:可以通过对象直接调用 ,需要用类名称创建一个对象
类方法:可以直接通过类名称调用,也可以通过对象来调用
静态方法:可以直接通过类名称调用,也可以通过对象来调用

补充:静态方法不可以继承
类方法不能访问实例变量,只能类变量

class Dog():#定义类
    age=3#类变量(不能传值)
    def __init__(self):
        self.name="xiaobai"#实例变量
    def run(self):#实例方法
        print("{}岁的{}正在跑步!".format(self.age,self.name))
    @classmethod
    def eat(cls):#类方法
        #print(cls.name)#类方法不能访问实例变量
        print("xiaohei{}岁了".format(cls.age))#类方法只能访问类变量
    @staticmethod
    def sleep(name):#静态方法
        #静态方法与类无关,只是类中的一个功能,静态方法不能访问实例变量和类变量
        print("{}在睡觉".format(name))
d=Dog()#创建对象
d.run()#通过对象调用实例方法
Dog.run(d)#通过类名称调用实例方法,需要在方法中传入实例对象
Dog.eat()#通过类名称调用类方法
d.eat()#通过对象调用类方法
Dog.sleep("xiaohuang")#通过类名称调用静态方法
d.sleep("xiaohuang")#通过对象调用静态方法

单继承
1.父类和子类的方法不一样

class father():#定义类
    def __init__(self,car):
        self.car=car
    def rich(self):
        print("有很多钱,买了一辆{}".format(self.car))
    def house(self):
        print("有很多楼")
f=father("宝马")
f.rich()

class bigson(father):#bigson类继承father类,bigson类拥有了father类的所有属性和方法
    def gir(self):
        print("给女朋友买了一辆{}".format(self.car))
f=father("宝马")
f.rich()
b=bigson("奔驰")
b.gir()

2. 子类拥有和父类相同的方法
当子类拥有和父类相同方法时,通过子类实例调用该方法,执行的是子类下的方法
class Teacher():#定义父类
    def Name(self):#实例方法
        print("This is my mother!")

class Myself(Teacher):#定义子类继承父类
    #对父类方法重写
    def Name(self):#实例方法
        print("my name is xiaoyang!")
M=Myself()
M.Name()

3.子类拥有和父类相同的方法(方法重写)
class Teacher():#定义父类
    def __init__(self,name):
        self.name=name#实例变量
    def Name(self):#实例方法
        print("my teacher name is {}!".format(self.name))

class Myself(Teacher):#定义子类继承父类
   #对父类方法重写
    def Name(self):#实例方法
        print("my teacher name is {}!".format(self.name))
M=Myself("laowang")
M.Name()


多继承
就是一个子类继承多个父类

class Mother():
    def bobby(self):
        print("Mother love shopping!")
class Farther():
    def work(self):
        print("Farher work is test engineer!")
class Myself(Farther,Mother):#继承多个父类
    pass#生成对象
M=Myself()
M.work()
M.bobby()


class Mother():
    def __init__(self,something):
        self.something=something

    def bobby(self):
        print("MOther love {}!".format(self.something))

class Farher():
    def __init__(self,work):
        self.work=work
    def Work(self):
        print("Farher work is {}!" .format(self.work))

class MYself(Farher,Mother):#继承多个父类
    def __init__(self,work=None,something=None):
        Farher.__init__(self,work)
        Mother.__init__(self,something)
    #想要调用特定父类的构造器只能使用"父类名称.__init__(self)"方式

M=MYself('test',"shopping")#生成对象
M.Work()
M.bobby()
#可以使用mro来查看顺序
print(MYself.mro())

如果不同的两个父类出现相同的属性或方法,子类会继承谁的属性或方法?
class Mother():
    def __init__(self,work):
        self.work=work

    def bobby(self):
        print("MOther love {}!".format(self.work))

class Farher():
    def __init__(self,work):
        self.work=work
    def bobby(self):
        print("Farher work is {}!" .format(self.work))

class MYself(Farher,Mother):#继承多个父类
        pass
M=MYself('test')#生成对象
M.bobby()
#可以使用mro来查看顺序
print(MYself.mro())








UI自动化测试并不是测试页面ui,而是跑页面功能
python+selenium库
selenium原理:通过selenium中webdriver以及浏览器驱动,去驱动浏览器和捕捉页面元素进行操作元素,从而达到模拟人工操作的结果

安装selenium库
把chromedriver.exe文件放到C:\Python37\Scripts目录下面,且存放路径一定是配置环境变量path路径中

ui自动化的优点
1.解决重复性功能测试和验证
2.减少测试人员在回归测试时用例的漏测和验证点的漏测
3.减少冒烟/回归测试的人力成本,节省时间,提高测试效率

什么样的项目适合做自动化测试?
1.项目版本稳定
2.项目周期较长

自动化测试一般在什么阶段开始实施?
1.自动化脚本在什么阶段输出?
    产品验收通过或项目上线后
2.脚本执行在什么阶段开始执行?
    回归测试
自动化测试的目的:用于回归测试

自动化如何进行开展工作?
1.熟悉业务需求,筛选出需要实现自动化测试的一些业务需求,评审
2.筛选出业务需求的自动化场景,及找出这些场景的功能测试用例
3.选择自动化测试工具
    3.1根据当前团队成员熟悉程度
    3.2选取主流的
4.自动化测试框架设计搭建
5.自动化用例的输出及执行和维护

常用的定位方法有哪些?
id、name、class、xpath、js、css
项目中的常用的有哪些?
基本都会用到,看功能情况,如果说当前功能有id就优先使用id,没有id就优先使用name,如果id和name都没有再去使用其他的方法


from selenium import webdriver #导入selenium库引用webdriver
import time #导入时间模块
driver=webdriver.Chrome() #通过webdriver调用谷歌Chrome生成一个浏览器对象
driver.get("http://www.baidu.com") #通过浏览器对象调用get方法打开测试地址
time.sleep(3) #停顿3秒

#1.id定位方法
driver.find_element_by_id('kw').send_keys('python')
a=driver.find_element_by_id('kw') #调用填写页面里id的值
a.send_keys('python') #选择要输入的

#2.name定位方法
driver.find_element_by_name('wd').send_keys('mysql')

#3.class定位方法
driver.find_element_by_class_name('s_ipt').send_keys('linux')

#4.xpath定位方法
    #相对路径定位—选择对应的数据右键copy—copyXpath
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('武汉')
driver.find_element_by_xpath('//*[@name="wd"]').send_keys('武汉')
#两个“//”表示相对路径,* 通配符 匹配任意标签名
    #组合定位
driver.find_element_by_xpath('//*[@id="kw" and @name="wd"]').send_keys('武汉')
driver.find_element_by_xpath('//*[@id="form"]/span[1]/input[1]').send_keys('武汉')
#先定位到它上一级,父级定位
     #绝对路径定位
driver.find_element_by_xpath('html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input').send_keys('武汉')


分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册