我的项目结构,runner.py是启动类,test_web.py是做业务处理,testcase.yaml编写测试用例

打包方式:不推荐pyinstaller,虽然pyinstaller命令简单,但是他只打包py结尾的文件,像上图中的testcase.yaml需要使用--add-data或者手动拷贝的方式也比较麻烦;最重要的是使用pyinstaller打包会大概率漏掉依赖,因为pyinstaller打包时是根据项目中importXX就打包XX。

推荐使用工具打包,本工具是打包整个环境,工具原开发者B站白月黑羽师傅

工具地址:白月黑羽 具体使用方式详见视频

重点来了:上述工具虽然好用,但只是打包项目内环境,当我们生成一个playwright项目的exe文件运行时,会提示'exist does't chrome',提示需要pyinstaller install安装浏览器,切默认安装在C盘,如果要完整打包(项目与浏览器)成为一个exe直接在一台什么环境都没有的机器上运行可按下述步骤。

1.在Pycharm的Terminal中使用XCOPY "你本地pyinstaller install安装浏览器的路径" "项目路径";就是把playwright自己下载的浏览器复制到你项目内,根据playwright的官方文档给出的命令,可以修改playwright浏览器路径为项目内的路径,具体可以这么写

playwright_browsers_path = os.path.join(current_dir, "playwright_browsers")
os.environ["PLAYWRIGHT_BROWSERS_PATH"] = playwright_browsers_path

2.allure同理,也需要使用XCOPY复制到你项目内,os.environ可以临时设置环境变量,但是当我们进程退出时刚设置的环境变量就失效了,所以在生成report后需要先手动设置环境变量,如下图

这里环境变量就是你复制到项目内allure的bin目录

然后在执行allure generate ./report -o ./allure-report --clean生成测试报告

最后打开测试报告 allure open

至此,可以把一个playwright+allure+pytest项目打包成一个exe直接在没有任何环境的电脑中运行了

更多推荐