资料
  • 资料
  • 专题
一站式通关CKA证书(完结10章,k8s1.27版本)
推荐星级:
类别: 软件/EDA/IP
时间:2023-12-16
大小:4.12KB
阅读数:184
上传用户:学习菜鸟小弟弟
查看他发布的资源
下载次数
1
所需E币
0
ebi
新用户注册即送 300 E币
更多E币赚取方法,请查看
close
资料介绍
一站式通关CKA证书-Kubernetes管理员认证(CKA)-Kubernetes管理员认证(CKA)计划的目的是提供CKA管理员具有执行Kubernetes管理员职责的技能﹑知识和能力的保证。这个CKA 证书是云原生计算基金会 CNCF 组织的,比国内的一些含水量很大的证书强太多了。


CKA 证书是云原生计算基金会 CNCF 组织的,它考察的是你是否具备足够管理 Kubernetes 集群的必备知识。考试形式是上机直接在集群上操作,限时 3 小时,非常考验个人知识的扎实程度和 Kubernetes 实践经验。无论你上了什么课,考试报名费都是交给 CNCF 的,证书也是他们发的,只要考上 75 分,你就能拿到证书,也能学到不少知识。

我们的配置文件已经写好了,后续新增的一些配置,都可以写在这个文件里,我们只要按需读取就可以了,那怎么来读取yaml文件中的数据呢?我们在common包下新建一个py文件,叫yaml_config.py,这个文件里会写一些读取配置文件相关的方法。
一般在python中读取文件的内容,都是使用open这个方法。
file =open("environment.yaml", encoding='utf-8')
try:
  a = file.read()
  print(a)
except Exception as e:
  print(e)
finally:
  file.close()
安装好以后我们开始正式写yaml_config中的方法。pyyaml读取了yaml后,会把yaml文件的内容转成python中字典的形式,这样我们就可以很方便的读取其中的某个值了。
import yaml

class GetConf:
    def __init__(self):
        #with open的第一个参数填写environment.yaml的绝对路径
        with open("/Users/fengzhaoxi/imooc/code/trading_system_autotest/config/environment.yaml", "r") as env_file:
            self.env = yaml.load(env_file, Loader=yaml.FullLoader)
            print(self.env)

    def get_username_password(self):
        return self.env["username"], self.env["password"]
      
if __name__ == '__main__':
    GetConf().get_username_password()
第二点:获取到了项目目录,下面我们需要把项目目录跟environment.yaml在项目中的相对路径拼接,拼接成environment.yaml的绝对路径。因为不同操作系统中的文件分隔符是不同的,所以在python中最好不要通过字符串去拼接分隔符,否则换了操作系统去运行可能就会出错,需要使用os.sep来添加分隔符,所以我们写一个方法
def sep(path, add_sep_before=False, add_sep_after=False):
    """
    系统分隔符
    Args:
        path: 路径列表,类型为数组
        add_sep_before: 是否需要在拼接的路径前加一个分隔符
        add_sep_after: 是否需要在拼接的路径后加一个分隔符

    Returns:

    """
    all_path = os.sep.join(path)
    if add_sep_before:
        all_path = os.sep + all_path
    if add_sep_after:
        all_path = all_path + os.sep
    return all_path
我们再回到yaml_config.py,我们获取environment.yaml的绝对路径,就是项目目录加上environment.yaml在项目中的项目目录。最后修改的完整方法如下
import yaml
from tools import get_project_path, sep


class GetConf:
    def __init__(self):
        project_dir = get_project_path()
        with open(project_dir + sep(['config', 'environment.yaml'], add_sep_before=True), "r") as env_file:
            self.env = yaml.load(env_file, Loader=yaml.FullLoader)
            print(self.env)

    def get_username_password(self):
        return self.env["username"], self.env["password"]


if __name__ == '__main__':
    GetConf().get_username_password()

备考难度不低,所以相关培训课程都不便宜。如果决心要考,准备一段时间反复看文档、做实验是必须的,CKA 的学习曲线很陡峭,它更多靠的是个人自觉和毅力
class LeftMenuBase:

    def level_one_menu(self, menu_name):
        """
        一级菜单
        :param menu_name:
        :return:
        """
        return "//aside[@class='el-aside']//span[text()='" + menu_name + "']/ancestor::li"

    def level_two_menu(self, menu_name):
        """
        二级菜单
        :param menu_name:
        :return:
        """
        return "//aside[@class='el-aside']//span[text()='" + menu_name + "']/ancestor::li[1]"

我们来举一个场景的例子,我们之前有个用例,是进入到已买到的宝贝页面,然后依次点击页面上的按钮,比如”全部“、”待付款“、”待发货“、”运输中“等等,我们当时是通过一个list,然后循环来点击。我们也可以通过pytest.mark.parametrize来修改这个用例
from time import sleep

import pytest

from page.LeftMenuPage import LeftMenuPage
from page.LoginPage import LoginPage
from page.OrderPage import OrderPage

tab_list = ["全部", "待付款", "待发货", "运输中", "待确认", "待评价"]


class TestOrderBuy:
    @pytest.mark.parametrize("tab", tab_list)
    def test_order_buy(self, driver, tab):
        LoginPage().login(driver, "william")
        LeftMenuPage().click_level_one_menu(driver, "我的订单")
        sleep(1)
        LeftMenuPage().click_level_two_menu(driver, "已买到的宝贝")
        sleep(2)
        OrderPage().click_order_tab(driver, tab)
        sleep(2)

我们再来写一个用例,将我们的订单发布参数化
from time import sleep

import pytest

from page.LoginPage import LoginPage
from page.LeftMenuPage import LeftMenuPage
from page.GoodsPage import GoodsPage

goods_info_list = [
    {
        "goods_title": "新增批量商品测试1",
        "goods_details": "新增商品测试详情1",
        "goods_num": 1,
        "goods_pic_list": ["商品图片一.jpg"],
        "goods_price": 100,
        "goods_status": "上架",
        "bottom_button_name": "提交"
    },
    {
        "goods_title": "新增批量商品测试2",
        "goods_details": "新增商品测试详情2",
        "goods_num": 2,
        "goods_pic_list": ["商品图片一.jpg"],
        "goods_price": 200,
        "goods_status": "上架",
        "bottom_button_name": "提交"
    }
]


class TestParametrizeAddGoods:
    @pytest.mark.parametrize("goods_info", goods_info_list)
    def test_parametrize_add_goods(self, driver, goods_info):
        LoginPage().login(driver, "jay")
        LeftMenuPage().click_level_one_menu(driver, "产品")
        sleep(1)
        LeftMenuPage().click_level_two_menu(driver, "新增二手商品")
        sleep(2)
        GoodsPage().add_new_goods(
            driver,
            goods_title=goods_info["goods_title"],
            goods_details=goods_info["goods_details"],
            goods_num=goods_info["goods_num"],
            goods_pic_list=goods_info["goods_pic_list"],
            goods_price=goods_info["goods_price"],
            goods_status=goods_info["goods_status"],
            bottom_button_name=goods_info["bottom_button_name"]
        )
        sleep(3)

底下我们想要测试用例执行的时候就更新测试进度,存储对应的测试结果

我们在common下新建一个py文件叫process_redis,我们把可能的情况都写好
from common.tools import get_now_time
from common.redis_operation import RedisOperation


class Process:

    def __init__(self):
        self.redis_client = RedisOperation().redis_client
        self.UI_AUTOTEST_PROCESS = "ui_autotest_process"
        self.FAILED_TESTCASE_NAMES = "failed_testcase_names"
        self.RUNNING_STATUS = "running_status"

    def reset_all(self):
        # 删除所有进度
        self.redis_client.delete(self.UI_AUTOTEST_PROCESS)
        # 删除所有失败用例的名称
        self.redis_client.delete(self.FAILED_TESTCASE_NAMES)

    def init_process(self, total):
        """
        初始化进度,包括总数、成功数、失败数、开始时间,运行状态
        :param total:
        :return:
        """
        self.redis_client.hset(self.UI_AUTOTEST_PROCESS, "total", total)
        self.redis_client.hset(self.UI_AUTOTEST_PROCESS, "success", 0)
        self.redis_client.hset(self.UI_AUTOTEST_PROCESS, "fail", 0)
        self.redis_client.hset(self.UI_AUTOTEST_PROCESS, "start_time", get_now_time())
        self.redis_client.hset(self.UI_AUTOTEST_PROCESS, "end_time", "")
        self.redis_client.set(self.RUNNING_STATUS, 1)

    def update_success(self):
        """
        成功用例个数+1
        Returns:

        """
        self.redis_client.hincrby(self.UI_AUTOTEST_PROCESS, "success")

    def update_fail(self):
        """
        失败用例个数+1
        Returns:

        """
        self.redis_client.hincrby(self.UI_AUTOTEST_PROCESS, "fail")

    def insert_into_fail_testcase_names(self, fail_testcase_name):
        """
        增加失败用例名称
        Returns:

        """
        self.redis_client.lpush(self.FAILED_TESTCASE_NAMES, fail_testcase_name)

    def get_process(self):
        """
        获取进度,计算百分比
        Returns:

        """
        total, success, fail, _ = self.get_result()
        if total == 0:
            return 0
        else:
            result = "%.1f" % ((int(success) + int(fail)) / int(total) * 100) + "%"
            return result

    def get_result(self):
        """
        获取测试结果
        Returns:

        """
        total = self.redis_client.hget(self.UI_AUTOTEST_PROCESS, "total")
        if total is None:
            total = 0
        success = self.redis_client.hget(self.UI_AUTOTEST_PROCESS, "success")
        if success is None:
            success = 0
        fail = self.redis_client.hget(self.UI_AUTOTEST_PROCESS, "fail")
        if fail is None:
            fail = 0
        start_time = self.redis_client.hget(self.UI_AUTOTEST_PROCESS, "start_time")
        if start_time is None:
            start_time = '-'
        return total, success, fail, start_time

    def get_fail_testcase_names(self):
        """
        获取所有失败的用例名称
        Returns:

        """
        fail_testcase_names = self.redis_client.lrange(self.FAILED_TESTCASE_NAMES, 0, -1)
        return fail_testcase_names

    def write_end_time(self):
        """
        把测试结束时间写入redis
        Returns:

        """
        self.redis_client.hset(self.UI_AUTOTEST_PROCESS, "end_time", get_now_time())

    def write_jenkins_build_number(self, build_number):
        """
        把jenkins执行的build_number写入redis
        Args:
            build_number:
版权说明:本资料由用户提供并上传,仅用于学习交流;若内容存在侵权,请进行举报,或 联系我们 删除。
PARTNER CONTENT
相关评论 (下载后评价送E币 我要评论)
没有更多评论了
  • 可能感兴趣
  • 关注本资料的网友还下载了
  • 技术白皮书