Beispiel #1
0
def send_email(email_path):
    from config.config import host, port, password, sender, receiver
    message = MIMEMultipart()
    #邮件内容
    text = """
    请输入你想说的邮件内容
    """
    message.attach(MIMEText(_text=text, _subtype='plain', _charset="utf-8"))
    #需要发送的附件的路径
    with open(email_path, 'rb') as f:
        content = f.read()
    att1 = MIMEText(content, "base64", "utf-8")
    att1["Content-Type"] = 'application/octet-stream'
    att1['Content-Disposition'] = 'attachment; filename = "report.xlsx"'#发送相应格式html或者xlsx
    message.attach(att1)

    #邮件主题
    message["Subject"] = Header("柠檬web商城", "utf-8").encode()
    message["From"] = Header("tianmeng", "utf-8")
    message["To"] = Header('tianmeng_wxk', "utf-8")

    try:
        smtp = smtplib.SMTP()
        #smtp = smtplib.SMTP_SSL('smtp.163.com', 465)
        smtp.connect(host=host, port=port)
        smtp.login(user=sender, password=password)
        sender = sender
        receiver = [receiver]
        smtp.sendmail(sender, receiver, message.as_string())
        Logger().log().info("发送邮件成功")
        return email_path
    except smtplib.SMTPException as e:
        Logger().log().info("发送邮件失败,失败信息:{}".format(e))
Beispiel #2
0
 def setup(self) -> None:
     Logger().log().info("开始执行前置条件setup")#对日志配置文件还不熟,使用的还是原来的日志形式
     Logger().log().info("正在打开app...")
     self.driver = start_app()
     self.driver.implicitly_wait(10)
     self.lp = Login(self.driver)
     self.rp = Register(self.driver)
Beispiel #3
0
    def send_email(self,email_path):
        message = MIMEMultipart()
        #邮件内容
        text = """
        请输入你想说的邮件内容
        """
        message.attach(MIMEText(_text=text, _subtype='plain', _charset="utf-8"))
        #需要发送的附件的路径
        with open(email_path, 'rb') as f:
            content = f.read()
        att1 = MIMEText(content, "base64", "utf-8")
        att1["Content-Type"] = 'application/octet-stream'
        att1['Content-Disposition'] = 'attachment; filename = "report.html"'
        message.attach(att1)

        #邮件主题
        message["Subject"] = Header("主题", "utf-8").encode()
        message["From"] = Header("tianmeng", "utf-8")
        message["To"] = Header('tianmeng_wxk', "utf-8")

        try:
            smtp = smtplib.SMTP()
            #smtp = smtplib.SMTP_SSL('smtp.163.com', 465)
            smtp.connect(host="smtp.qq.com", port=587)
            smtp.login(user="******", password="******")
            sender = "*****@*****.**"
            receiver = ['*****@*****.**']
            smtp.sendmail(sender, receiver, message.as_string())
            Logger().log().info("发送邮件成功")
        except smtplib.SMTPException as e:
            Logger().log().info("发送邮件失败,失败信息:{}".format(e))
def assert_text(loc_type, loc_ex, expect):
    try:
        reality = find_element(loc_type, loc_ex).text
        assert reality == expect
        Logger().log().info("流程正确,断言成功!")
        return True
    except Exception as e:
        Logger().log().info("流程正确,断言失败!失败信息:{}".format(e))
        return False
Beispiel #5
0
 def assert_text(self, loc_type, value, expect):
     reality = self.locator(loc_type, value).text
     try:
         assert reality == expect
         Logger().log().info("流程正确,断言成功!")
         return True
     except Exception as e:
         Logger().log().info("流程正确,断言失败!失败信息:{}".format(e))
         return False
 def cance(self):
     Logger().log().info("检查是否有取消按钮")
     try:
         cance = self.loc(self.cance_bt)
     except NoSuchElementException:
         Logger().log().info("没有取消按钮")
     else:
         Logger().log().info("点击取消按钮")
         cance.click()
 def skip(self):
     Logger().log().info("检查是否有跳过按钮")
     try:
         skip = self.loc(self.skip_bt)
     except NoSuchElementException:
         Logger().log().info("没有跳过按钮")
     else:
         skip.click()
         Logger().log().info("点击跳过按钮")
Beispiel #8
0
 def assert_text(self, **kwargs):
     try:
         reality = self.locator(**kwargs).text
         assert reality == kwargs['expect']
         Logger().log().info("流程正确,断言成功!")
         return True
     except Exception as e:
         Logger().log().info("流程正确,断言失败!失败信息:{}".format(e))
         return False
Beispiel #9
0
 def assert_text(self, loc_type, value, expect):
     try:
         reality = self.driver.find_element(getattr(By, loc_type.upper()),
                                            value)
         assert reality == expect
         Logger().log().info("加入购物车流程正确,断言成功!")
         return True
     except Exception as e:
         Logger().log().info("加入购物车流程正确,断言失败!")
         return False
Beispiel #10
0
 def login(self, username, password):
     self.cance()
     self.skip()
     # driver = start_app()
     # Common(driver).cance()
     # Common(driver).skip()
     Logger().log().info("开始登录")
     self.loc(self.uname).send_keys(username)
     self.loc(self.upwd).send_keys(password)
     self.loc(self.loginbt).click()
     Logger().log().info("结束登录")
 def register(self, username, password, email):
     self.cance()
     self.skip()
     Logger().log().info("开始注册")
     self.loc(Login.regis).click()
     WebDriverWait(self.driver,
                   5).until(lambda el: el.find_element(*self.uname))
     self.loc(self.uname).send_keys(username)
     self.loc(self.upwd).send_keys(password)
     self.loc(self.email).send_keys(email)
     self.loc(self.regisbt).click()
     Logger().log().info("注册完成")
Beispiel #12
0
def open_browser(browser_type):
    try:
        if browser_type == 'CHR':
            Logger().log().info('正常启动浏览器中......')
            driver = webdriver.Chrome(options=Options().options_conf())
        else:
            driver = getattr(webdriver, browser_type)()
    except Exception as e:
        Logger().log().info("输入浏览器类型错误,默认调用谷歌浏览器,错误信息{}".format(e))
        driver = webdriver.Chrome()

    return driver
 def assert_txt(self):
     msg = "注册成功"
     message = '//*[@text=\'{}\']'.format(msg)
     try:
         toast_element = WebDriverWait(
             self.driver,
             5).until(lambda el: el.find_element_by_xpath(message))
         Logger().log().info("断言成功,找到断言元素,元素的text属性为:{}".format(
             toast_element.text))
         return True
     except:
         Logger().log().info("断言失败,未找到断言元素")
         return False
Beispiel #14
0
def browser_type(type):
    type = type.upper()
    if type == "CHR":
        Logger().log().info('正常启动谷歌浏览器中......')
        driver = webdriver.Chrome(options=Options().options_conf())
    elif type == "IE":
        Logger().log().info('正常启动IE浏览器中......')
        driver = webdriver.Ie()
    elif type == "FF":
        Logger().log().info('正常启动火狐浏览器中......')
        driver = webdriver.Firefox()
    else:
        Logger().log().info('输入浏览器类型失败,默认启用chrome浏览器')
        driver = webdriver.Chrome()
    return driver
 def assert_text(self,loc_type,value,expect):
     try:
         #获取到总的搜索内容
         items = self.driver.find_elements(getattr(By,loc_type.upper()),value)
         print(items)
         reality = []
         #遍历出一个个商品的内容
         for itme in items:
             reality.append(itme.text)
         Logger().log().info("搜索出的商品列表:", reality)
         assert expect in reality
         Logger().log().info("搜索流程正确,断言成功!")
         return True
     except Exception as e:
         Logger().log().info("搜索流程正确,断言失败!")
         return False
Beispiel #16
0
    def assert_txt(self):
        error_message = "用户名或密码错误,你还可以尝试1次"
        limit_message = "验证失败次数过多,请15分钟后再试"

        message = '//*[@text=\'{}\']'.format(limit_message)
        # message='//*[@text=\'{}\']'.format(limit_message)
        # 显示等待lambda匿名函数,如果获取不到会超时报错
        try:
            toast_element = WebDriverWait(
                self.driver,
                5).until(lambda el: el.find_element_by_xpath(message))
            Logger().log().info("断言成功,找到断言元素,元素的text属性为:{}".format(
                toast_element.text))
            return True
        except:
            Logger().log().info("断言失败,未找到断言元素")
            return False
def test_login():
    excel = LoadExcel(path)
    for rownum in range(2, excel.get_max_row() + 1):
        operator_name1 = excel.get_cell_value(rownum, operator_name)

        keyword1 = excel.get_cell_value(rownum, keyword)
        loc_type1 = excel.get_cell_value(rownum, loc_type)
        loc_ex1 = excel.get_cell_value(rownum, loc_ex)
        operator_value1 = excel.get_cell_value(rownum, operator_value)
        expect1 = excel.get_cell_value(rownum, expect)
        if keyword1 == 'ivercode':
            func = keyword1 + "()"
            func = eval(func)

            Logger().log().debug("操作描述:{}".format(operator_name1))

            # sheet.cell(row, 9).value = "pass"
            Logger().log().debug("func值为:{}".format(func))
            excel.set_cell_value(rownum + 1, operator_value, func)

        elif "assert" in keyword1:
            func = '{}("{}","{}","{}")'.format(keyword1, loc_type1, loc_ex1,
                                               expect1)
            Logger().log().debug("操作描述:{}".format(operator_name1))
            status = eval(func)
            if status == True:

                # excel.set_cell_value(rownum, result, "pass")
                # excel.get_cell_value(rownum,result).fill = PatternFill('solid', fgColor='66ff00')
                # excel.get_cell_value(rownum, result).font = Font(bold=True)
                excel.sheet.cell(rownum, result).value = "pass"
                excel.sheet.cell(rownum,
                                 result).fill = PatternFill('solid',
                                                            fgColor='66ff00')
                excel.sheet.cell(rownum, result).font = Font(bold=True)
            else:
                # excel.set_cell_value(rownum, result, "false")
                # excel.get_cell_value(rownum,result).fill = PatternFill('solid', fgColor='FF0000')
                # excel.get_cell_value(rownum, result).font = Font(bold=True)
                excel.sheet.cell(rownum, result).value = "false"
                excel.sheet.cell(rownum,
                                 result).fill = PatternFill('solid',
                                                            fgColor='FF0000')
                excel.sheet.cell(rownum, result).font = Font(bold=True)
        else:
            if loc_type1 == loc_ex1 == operator_value1 == None:
                func = keyword1 + "()"
                Logger().log().debug("操作描述:{}".format(operator_name1))
            elif operator_value1 == None:
                func = '{}("{}","{}")'.format(keyword1, loc_type1, loc_ex1)
                Logger().log().debug("操作描述:{}".format(operator_name1))
            elif loc_type1 == loc_ex1 == None:
                func = '{}("{}")'.format(keyword1, operator_value1)
                Logger().log().debug("操作描述:{}".format(operator_name1))
            else:
                func = '{}("{}","{}","{}")'.format(keyword1, loc_type1,
                                                   loc_ex1, operator_value1)
                Logger().log().debug("操作描述:{}".format(operator_name1))
            eval(func)
    excel.save_excel(path)
Beispiel #18
0
 def send_mail(self,mail_path):
     with open(mail_path, 'rb') as f:
         content = f.read()
     host = "smtp.qq.com"
     port = 587
     sender = "*****@*****.**"
     password = "******"
     receiver = "*****@*****.**"
     message = MIMEText(content, "HTML", "UTF-8")
     message["Subject"] = "考研帮APPUI自动化测试"
     message["From"] = sender
     message["To"] = receiver
     try:
         smtp = smtplib.SMTP(host, port)
         smtp.login(sender, password)
         smtp.sendmail(sender, receiver, message.as_string())
         Logger().log().info("发送邮件成功")
     except smtplib.SMTPException as e:
         Logger().log().info("发送邮件失败,失败信息:{}".format(e))
Beispiel #19
0
def send_mail(email_path):
    from config.config import host, port, password, sender, receiver
    with open(email_path, 'rb') as f:
        content = f.read()
    host = host
    port = port
    sender = sender
    password = password
    receiver = receiver
    message = MIMEText(content, "HTML", "UTF-8")
    message["Subject"] = "接口测试"
    message["From"] = sender
    message["To"] = receiver
    try:
        smtp = smtplib.SMTP(host, port)
        smtp.login(sender,password)
        smtp.sendmail(sender, receiver, message.as_string())
        Logger().log().info("发送邮件成功")
    except smtplib.SMTPException as e:
        Logger().log().info("发送邮件失败,失败信息:{}".format(e))
Beispiel #20
0
 def locator(self, **kwargs):
     # v1.0
     # if loc_type is 'xpath':
     #     return self.driver.find_element_by_xpath(value)
     # elif loc_type is 'id':
     #     return self.driver.find_element_by_id(value)
     try:
         return self.driver.find_element(
             getattr(By, kwargs['type'].upper()), kwargs['value'])
     except Exception as e:
         Logger().log().info("定位元素出现异常,异常信息:\n{}".format(e))
Beispiel #21
0
class UIHandle():
    logger = Logger()

    # 构造方法,用来接收selenium的driver对象
    @classmethod
    def __init__(cls, driver):
        cls.driver = driver

    # 输入地址
    @classmethod
    def get(cls, url):
        cls.logger.loginfo(url)
        cls.driver.get(url)

    # 关闭浏览器驱动
    @classmethod
    def quit(cls):
        cls.driver.quit()

    # element对象(还可加入try,截图等。。。)
    @classmethod
    def element(cls, page, element):
        # 加入日志
        cls.logger.loginfo(page)
        # 加入隐性等待
        # 此处便可以传入config_o1中的dict定位参数
        el = WebDriverWait(cls.driver, 10).until(
            EC.presence_of_element_located(locat_config[page][element]))
        # 加入日志
        cls.logger.loginfo(page + 'OK')
        return el

    # element对象(还未完成。。。)
    def elements(cls, page, element):
        # 加入日志
        cls.logger.loginfo(page)
        # 加入隐性等待
        WebDriverWait(cls.driver, 10)
        els = cls.driver.find_elements(*locat_config[page][element])
        # 注意返回的是list
        return els

    # send_keys方法
    @classmethod
    def Input(cls, page, element, msg):
        el = cls.element(page, element)
        el.send_keys(msg)

    # click方法
    @classmethod
    def Click(cls, page, element):
        el = cls.element(page, element)
        el.click()
Beispiel #22
0
14 class UIHandle():
15     logger = Logger()
16
17     # 构造方法,用来接收selenium的driver对象
18     @classmethod
19     def __init__(cls, driver):
20         cls.driver = driver
21
22     # 输入地址
23     @classmethod
24     def get(cls, url):
25         cls.logger.loginfo(url)
26         cls.driver.get(url)
27
28     # 关闭浏览器驱动
29     @classmethod
30     def quit(cls):
31         cls.driver.quit()
32
33     # element对象(还可加入try,截图等。。。)
34     @classmethod
35     def element(cls, page, element):
36         # 加入日志
37         cls.logger.loginfo(page)
38         # 加入隐性等待
39         # 此处便可以传入config_o1中的dict定位参数
40         el = WebDriverWait(cls.driver, 10).until(EC.presence_of_element_located(locat_config[page][element]))
41         # 加入日志
42         cls.logger.loginfo(page+'OK')
43         return el
44     # element对象(还未完成。。。)
45     def elements(cls, page, element):
46         # 加入日志
47         cls.logger.loginfo(page)
48         # 加入隐性等待
49         WebDriverWait(cls.driver, 10)
50         els = cls.driver.find_elements(*locat_config[page][element])
51         # 注意返回的是list
52         return els
53
54     # send_keys方法
55     @classmethod
56     def Input(cls, page, element, msg):
57         el = cls.element(page, element)
58         el.send_keys(msg)
59
60     # click方法
61     @classmethod
62     def Click(cls, page, element):
63         el = cls.element(page, element)
64         el.click()
class MFB_Center(unittest.TestCase):
    """
    MFB_Center类用于满分班购课中心(web端)测试用例的管理
    """
    log = Logger().get_logger().info('开始执行测试用例')
    yaml_path = '../config/data.yml'
    key1 = 'webui'
    key2 = 'mfb_file'

    def test_visit(self):
        """
        访问购课中心url
        """
        return self
Beispiel #24
0
class RunTest:
    def __init__(self):
        self.cmd = Command()
        self.email_util = EmailUtil()
        self.alert = Alert()
        self.logger = Logger().get_logger()

    def main(self):
        time_stamp = str(int(time.time()))
        file_path = BASE_DIR + '/report/html_report/' + time_stamp + ".html"
        test_dir = BASE_DIR + '/test_cases'
        allure_reports = BASE_DIR + '/report/allure_reports'
        allure_report = BASE_DIR + '/report/allure_report'
        pytest.main([
            test_dir, '-v', '-s', '--html=' + file_path,
            '--alluredir=' + allure_reports, '--reruns', '1', '--reruns-delay',
            '3'
        ])
        # 本地生成allure报告,jenkins配置allure, 不需要执行命令
        # cmd = "allure generate "+allure_reports+" -o "+allure_report + " --clean"
        # result = self.cmd.execute_result_cmd(cmd)
        self.email_util.send_email(file_path)
        self.alert.send_text("ui测试完成, 已发送邮件")
        self.logger.info("ui测试完成,邮件已发送")
    def test_inputPhone(self):
        phone_input = self.driver.find_element_by_id('J-m-user')

        logger = Logger().get_logger()
        for x in self.number:
            phone_input.clear()
            print('正在输入手机号',x)
            phone_input.send_keys(str(self.number))
            text = self.driver.find_element_by_xpath('//*[@id="J-m-user"]').text
            #print('text:',text)
            if text is '请输入手机号':
                logger.warning('输入手机号失败')
            else:
                logger.info('输入手机号成功')
                print('点击按钮')
Beispiel #26
0
class Excel_conf:
    # 创建日志对象
    log = Logger().get_logger()

    # 定义Excel格式
    def cell_write(self, value, sheet, row):
        bold = Font(bold=True)
        if value == 'pass':
            fill = PatternFill('solid', fgColor='AACF91')
        elif value == 'false':
            fill = PatternFill('solid', fgColor='FF0000')
        else:
            pass
        sheet.cell(row=row, column=8).value = value.upper()
        sheet.cell(row=row, column=8).fill = fill
        sheet.cell(row=row, column=8).font = bold

    # 读取配置文件中的信息,获取excel路径,基于yaml获取文件
    def load_yaml(self, yaml_path):
        file = open(yaml_path, 'r', encoding='utf-8')
        file_data = yaml.load(file, Loader=yaml.FullLoader)
        return file_data

    # openpyxl 打开excel用例
    def open_excel(self, excel_path):
        # 读取excel的内容
        excel = openpyxl.load_workbook(excel_path)
        return excel

    # 获取excel的所有sheet
    def get_sheets(self, excel):
        sheets = excel.sheetnames
        return sheets

    # 关闭excel文件,释放资源
    def close(self, excel):
        excel.close()

    # 保存excel
    def excel_save(self, excel, path):
        excel.save(path)
Beispiel #27
0
#! /usr/bin/env python3

import random

from log.log import Logger
from enums.player_role_enum import PlayerRoleEnum
from common.card_utils import CardUtil

logger = Logger.getLog(__file__)

class Player:

    def __init__(self, name, role=PlayerRoleEnum.DEFAULT):
        """
        name : a specified name for current player
        role : the role of player
        """
        if role == PlayerRoleEnum.DEFAULT:
            raise Exception('Please specified the role of this player,' \
                        'ref <PlayerRoleEnum>')
        logger.info(f'Current Player is [{name}({role.value})]')
        self.name = name
        self.role = role

    def obtain_init_card(self, exclude_card=None):
        """
        Obatain cards at first time in one episode
        """
        card_num = 17
        if self.role == PlayerRoleEnum.LAND_OWNER:
            card_num = 20
Beispiel #28
0
 def __init__(self):
     self.cmd = Command()
     self.email_util = EmailUtil()
     self.alert = Alert()
     self.logger = Logger().get_logger()
Beispiel #29
0
sys.setdefaultencoding('utf-8')
import random
import json
import time
import requests
from threading import Thread
from Queue import Queue
from lxml import etree
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from util import Basic
from log.log import Logger
L = Logger("task.AddTime")


class Conphantomjs(object):
    phantomjs_max = 10  ##同时开启phantomjs个数
    jiange = 0.01  ##开启phantomjs间隔

    def __init__(self):
        self.q_phantomjs = Queue()
        self.resQue = Queue()

    def getbody(self, asinDict):
        driver = self.q_phantomjs.get()
        url = asinDict[asinDict.keys()[0]][-1]
        try:
            driver.get(url)
Beispiel #30
0
# __**__ coding=utf-8 __**__
# 作者:calm_zn
# 日期:2020/6/29 14:40
# 工具:PyCharm
# Python版本:3.7

from keywords.keywords import Keywords
from log.log import Logger
from excel.excel_excutor import Excel_excutor

if __name__ == '__main__':
    log = Logger().get_logger().info('开始执行测试用例')
    yaml_path = '../config/data.yml'
    key1 = 'webui'
    key2 = 'file'
    Excel_excutor().excute_web(yaml_path, key1, key2)