MVC+参数化

#用例1:京东登陆      用例2:循环点击

#  (单元测试) jdlogin.py  :

#-*- coding:utf-8 -*-

# 导入单元测试包
import unittest
# 导入工具类
from  util import firefoxutil,urlutil
# 导入控制类(C层)
from login.loginc import logincontrol
# 倒包登陆model层的包
from login.loginm import login_data
# 声明类 继承单元测试
class JdLogin(unittest.TestCase):


    # 实例化对象的方法
    @classmethod
    def setUpClass(self):

        # 实例化对象
        self.firefox = firefoxutil.Firefoxutil()
        self.URL = urlutil.URL()
        # 实例化控制对象
        self.login = logincontrol.LoginControl(self.firefox)
        # 实例化model层数据 也就是实例化对象
        self.loginm = login_data.LoginData()

        pass

    # 测试用例执行之前执行的方法
    def setUp(self):

        # 打开浏览器
        self.firefox.firefox_start(self.URL.JD_LOGIN)

        pass

    # 测试用例执行之后执行的方法
    def tearDown(self):

        # 关闭浏览器
        self.firefox.firefox_close()

        pass

    # # 测试用例, 注意如果不写测试用例,单元测试是不会运行的
    # def test_us_pw(self):
    #
    #     # MVC模式
    #     # m层 model层 在咱们代码里面对应咱们的测试用例层
    #     # view层 对应的是咱们的单元测试层
    #     # control 层就是咱们的逻辑代码层
    #
    #     # 使用for循环,获取内容,同时断言
    #     for index in self.loginm.getData():
    #
    #         # 注意获取出来的类型是uncode 类型,需要对类型进行编码,
    #         # 同时转类型,但是我们的输入框是支持unicode 类型,只需要对他编码就可以了
    #
    #         self.login.LoginSendkeyUwPw(index[0].decode("UTF-8"),index[1].decode("UTF-8"))
    #
    #         # 因为是for循环,所以每次我们登录的时候都需要设置休眠
    #         self.firefox.TimeSleep(firefoxutil.ENUMS.FIVE_TIME)
    #
    #         # 断言,需要判断是成功登陆,还是失败的用例
    #         if int(index[3].decode("UTF-8")) == 0:
    #
    #             # # 添加断言
    #             self.firefox.AssertClass(self,index[2].decode("UTF-8"),"msg-error")
    #
    #         else:
    #
    #             # 登陆成功以后,断言title
    #             self.firefox.AssertTitle(self,index[2].decode("UTF-8"))
    #
    #
    #
    #     pass

    # 点击 a标签的单元测试
    def test_click_about_me(self):


        # 使用for 循环
        for index in self.loginm.get_click_about_me():

            # 获取当前页面
            current = self.firefox.getCurrentWindow()

            print index[1].decode("UTF-8")

            # 点击关于我们
            self.firefox.ClickLink_switch_to_window(index[1].decode("UTF-8"))

            # 设置休眠 网速慢
            self.firefox.TimeSleep(firefoxutil.ENUMS.FIVE_TIME)

            # 进行断言
   
            if int(index[0].decode("UTF-8"))==0:

                self.f.AssertTitle(self,index[2].decode("UTF-8"))

            else:

                self.f.AssertTitle(self,index[2].decode("UTF-8")+", "+index[3].decode("UTF-8")+", "+index[4].decode("UTF-8"))

            # 关闭当前页面
            self.firefox.firefox_current()

            # 切换到登陆页面
            self.firefox.driver.switch_to.window(current)

        pass

#              (C层)logincontrol.py:
#-*- coding:utf-8 -*-
from util import firefoxutil

# 定义类继承object

class LoginControl(object):


    # 类被实例化的时候执行的方法
    # 对应的java 里面的构造函数
    def __init__(self,firefox):

        # self.firefox = firefoxutil.Firefoxutil()
        #
        self.firefox = firefox

        pass

    # 封装输入用户名和密码的方法
    def LoginSendkeyUwPw(self,username,password):

        # 点击账号登陆
        self.firefox.ClickClass("login-tab-r")

        # 查找用户名和密码,以及点击登录
        self.firefox.SendkeysID("loginname",username)
        self.firefox.SendkeysID("nloginpwd",password)

        # 点击登陆按钮
        self.firefox.ClickID("loginsubmit")

        pass


#                    (M层)login_data.py :
#-*- coding:utf-8 -*-

# 导入csv文件
import csv
# 导入os包
import os

# 声明类继承object
class LoginData(object):



    # 读取登陆测试用例的文件的方法
    # 面试题: 你写测试用例或者看测试用例的时候,如果知道这条测试有能力能不能写自动化
    # 可以在测试用例里面加入一个类型,通过类型判断能不能写成自动化脚本
    def getData(self):

        # 指定读写路径

        # 获取当前路径,如果在suit运行,当前路径就是suit的路径,也就是说在那个类运行,获取的当前路径就是那个类的路径
        current_file = os.getcwd()
        # 指定现在文件的路径
        files = os.path.dirname(current_file)+"/login/loginm/1509E1.csv"

        # 打开文件
        # 面试题: open 与 file 方法的区别
        # open 是Python  新增的语法,file 是老语法
        filename = open(files,'rb')

        # 通过 csv读取出出来

        data = csv.reader(filename)


        return data


    # 登陆页面点击所有连接的的方法
    def get_click_about_me(self):
        # 指定读写路径

        # 获取当前路径,如果在suit运行,当前路径就是suit的路径,也就是说在那个类运行,获取的当前路径就是那个类的路径
        current_file = os.getcwd()
        # 指定现在文件的路径
        files = os.path.dirname(current_file) + "/login/loginm/jdlogin_foot.csv"

        # 打开文件
        # 面试题: open 与 file 方法的区别
        # open 是Python  新增的语法,file 是老语法
        filename = open(files, 'rb')

        # 通过 csv读取出出来

        data = csv.reader(filename)

        return data

#                 (读取)CSV:
#1509E1.csv
,,请输入账户名和密码,0
18301585363,,请输入密码,0
18301585363,1,账户名与密码不匹配,请重新输入,0
15284391655,fei961216,京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!,1
#jdlogin_foot.csv
0,关于我们,企业简介-京东商城
0,联系我们,联系我们-京东商城
0,人才招聘,京东招聘官网
0,商家入驻,商家入驻-入驻流程 - 京东全品类专题活动-京东
0,广告服务,广告服务 - 京东全品类专题活动-京东
0,手机京东,手机京东 - 京东
0,友情链接,友情链接
0,销售联盟,京东联盟
0,京东社区,京东社区 - 京东电脑、办公|游戏设备专题活动-京东
0,京东公益,京东公益
1,English Site,JD.com Global Online Shopping Site: Online Shopping for Electronics,Clothing,Toys and More
#      (运行)suit.py:
#-*- coding:utf-8 -*-
import unittest
from unit import unit,shopcar,jdlogin
import HTMLTestRunner
import os
import time

# 设置系统编码格式
import sys
# 重载系统
reload(sys)
# 设置编码格式
sys.setdefaultencoding("UTF-8")

import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 倒包添加附件
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart


suit=unittest.TestSuite()

#suit.addTest(unittest.makeSuite(unit.Login))
#suit.addTest(unittest.makeSuite(shopcar.ShopCar))
suit.addTest(unittest.makeSuite(jdlogin.JdLogin))

#设置生成时间
#times=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())

#files=os.getcwd()+"/jd.html"
files=os.getcwd()+"/jd3.html"

filename=open(files,'wb')

runner=HTMLTestRunner.HTMLTestRunner(stream=filename,title=u"京东",description=u"京东测试用例")

runner.run(suit)

#关流
filename.close()

# send = "18301585363@163.com"
# recever1 = "1633909553@qq.com"
# title="生活不止眼前的苟且,还有诗和远方的田野"
# emin="smtp.163.com"
# zh="18301585363@163.com"
# mm="gaoxuejun123"
# files1="jd.html"
#
# filename1=open(files1,"rb")
#
# emin_name=filename1.read()
#
# filename1.close()
#
# msg = MIMEText(emin_name,_subtype="html",_charset="UTF-8")
#
# msg['Subject'] = Header(title,"UTF-8")
#
# msg['From'] = send
# msg['To'] = recever1
#
# smtp=smtplib.SMTP()
#
# smtp.connect(emin)
#
# smtp.login(zh,mm)
#
# smtp.sendmail(send,recever1,msg.as_string())
#
# smtp.quit()













 



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值