hexo-blog-deploy/2022/12/20/基于behave框架的第三方库/index.html

16 lines
33 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width"><meta name="theme-color" content="#222"><meta name="generator" content="Hexo 5.4.2"><link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png"><link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png"><link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png"><link rel="mask-icon" href="/images/logo.svg" color="#222"><link rel="stylesheet" href="/css/main.css"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" integrity="sha256-HtsXJanqjKTc8vVQjO4YMhiqFoXkfBsjBWcX91T1jr8=" crossorigin="anonymous"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.1.1/animate.min.css" integrity="sha256-PR7ttpcvz8qrF57fur/yAx1qXMFJeJFiA6pSzWi0OIE=" crossorigin="anonymous"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.css" integrity="sha256-Vzbj7sDDS/woiFS3uNKo8eIuni59rjyNGtXfstRzStA=" crossorigin="anonymous"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pace/1.2.4/themes/blue/pace-theme-minimal.css"><script src="https://cdnjs.cloudflare.com/ajax/libs/pace/1.2.4/pace.min.js" integrity="sha256-gqd7YTjg/BtfqWSwsJOvndl0Bxc8gFImLEkXQT8+qj0=" crossorigin="anonymous"></script><script class="next-config" data-name="main" type="application/json">{"hostname":"kiki.kim","root":"/","images":"/images","scheme":"Gemini","darkmode":false,"version":"8.15.1","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12},"copycode":{"enable":true,"style":"flat"},"bookmark":{"enable":false,"color":"#222","save":"auto"},"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":true,"async":false,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"prism":false,"i18n":{"placeholder":"搜索...","empty":"没有找到任何搜索结果:${query}","hits_time":"找到 ${hits} 个搜索结果(用时 ${time} 毫秒)","hits":"找到 ${hits} 个搜索结果"},"path":"/search.xml","localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false}}</script><script src="/js/config.js"></script><meta name="description" content="基于behave框架的第三方库介绍"><meta property="og:type" content="article"><meta property="og:title" content="基于behave框架的第三方库"><meta property="og:url" content="http://kiki.kim/2022/12/20/%E5%9F%BA%E4%BA%8Ebehave%E6%A1%86%E6%9E%B6%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93/index.html"><meta property="og:site_name" content="随言碎语"><meta property="og:description" content="基于behave框架的第三方库介绍"><meta property="og:locale" content="zh_CN"><meta property="article:published_time" content="2022-12-20T10:56:34.000Z"><meta property="article:modified_time" content="2023-04-27T14:35:20.933Z"><meta property="article:author" content="小梦同学的blog"><meta property="article:tag" content="BDD"><meta property="article:tag" content="python"><meta property="article:tag" content="behave"><meta property="article:tag" content="自动化测试"><meta name="twitter:card" content="summary"><link rel="canonical" href="http://kiki.kim/2022/12/20/%E5%9F%BA%E4%BA%8Ebehave%E6%A1%86%E6%9E%B6%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93/"><script class="next-config" data-name="page" type="application/json">{"sidebar":"","isHome":false,"isPost":true,"lang":"zh-CN","comments":true,"permalink":"http://kiki.kim/2022/12/20/%E5%9F%BA%E4%BA%8Ebehave%E6%A1%86%E6%9E%B6%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93/","path":"2022/12/20/基于behave框架的第三方库/","title":"基于behave框架的第三方库"}</script><script class="next-config" data-name="calendar" type="application/json">""</script><title>基于behave框架的第三方库 | 随言碎语</title><noscript><link rel="stylesheet" href="/css/noscript.css"></noscript><link rel="alternate" href="/atom.xml" title="随言碎语" type="application/atom+xml"><style>.darkmode--activated{--body-bg-color:#282828;--content-bg-color:#333;--card-bg-color:#555;--text-color:#ccc;--blockquote-color:#bbb;--link-color:#ccc;--link-hover-color:#eee;--brand-color:#ddd;--brand-hover-color:#ddd;--table-row-odd-bg-color:#282828;--table-row-hover-bg-color:#363636;--menu-item-bg-color:#555;--btn-default-bg:#222;--btn-default-color:#ccc;--btn-default-border-color:#555;--btn-default-hover-bg:#666;--btn-default-hover-color:#ccc;--btn-default-hover-border-color:#666;--highlight-background:#282b2e;--highlight-foreground:#a9b7c6;--highlight-gutter-background:#34393d;--highlight-gutter-foreground:#9ca9b6}.darkmode--activated img{opacity:.75}.darkmode--activated img:hover{opacity:.9}.darkmode--activated code{color:#69dbdc;background:0 0}button.darkmode-toggle{z-index:9999}.darkmode-ignore,img{display:flex!important}.beian img{display:inline-block!important}</style></head><body itemscope itemtype="http://schema.org/WebPage" class="use-motion"><div class="headband"></div><main class="main"><div class="column"><header class="header" itemscope itemtype="http://schema.org/WPHeader"><div class="site-brand-container"><div class="site-nav-toggle"><div class="toggle" aria-label="切换导航栏" role="button"><span class="toggle-line"></span> <span class="toggle-line"></span> <span class="toggle-line"></span></div></div><div class="site-meta"><a href="/" class="brand" rel="start"><i class="logo-line"></i><p class="site-title">随言碎语</p><i class="logo-line"></i></a><p class="site-subtitle" itemprop="description">咕叽咕叽</p></div><div class="site-nav-right"><div class="toggle popup-trigger" aria-label="搜索" role="button"><i class="fa fa-search fa-fw fa-lg"></i></div></div></div><nav class="site-nav"><ul class="main-menu menu"><li class="menu-item menu-item-home"><a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a></li><li class="menu-item menu-item-tags"><a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>标签<span class="badge">46</span></a></li><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档<span class="badge">32</span></a></li><li class="menu-item menu-item-about"><a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>关于</a></li><li class="menu-item menu-item-guestbook"><a href="/guestbook/" rel="section"><i class="fa fa-book fa-fw"></i>留言板</a></li><li class="menu-item menu-item-search"><a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索</a></li></ul></nav><div class="search-pop-overlay"><div class="popup search-popup"><div class="search-header"><span class="search-icon"><i class="fa fa-search"></i></span><div class="search-input-container"><input autocomplete="off" autocapitalize="off" maxlength="80" placeholder="搜索..." spellcheck="false" type="search" class="search-input"></div><span class="popup-btn-close" role="button"><i class="fa fa-times-circle"></i></span></div><div class="search-result-container no-result"><div class="search-result-icon"><i class="fa fa-spinner fa-pulse fa-5x"></i></div></div></div></div></header><aside class="sidebar"><div class="sidebar-inner sidebar-nav-active sidebar-toc-active"><ul class="sidebar-nav"><li class="sidebar-nav-toc">文章目录</li><li class="sidebar-nav-overview">站点概览</li></ul><div class="sidebar-panel-container"><div class="post-toc-wrap sidebar-panel"><div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-2"><a class="nav-link" href="#1-web-ui-%E8%87%AA%E5%8A%A8%E6%B5%8B%E8%AF%95-%E2%80%93-behaving"><span class="nav-number">1.</span> <span class="nav-text">1. web ui 自动测试 behaving</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#2-api%E6%8E%A5%E5%8F%A3%E6%B5%8B%E8%AF%95-%E2%80%93-behave-http"><span class="nav-number">2.</span> <span class="nav-text">2. api接口测试 behave-http</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#3-db%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%95-%E2%80%93behave-db"><span class="nav-number">3.</span> <span class="nav-text">3. db数据库测试 behave-db</span></a></li></ol></div></div><div class="site-overview-wrap sidebar-panel"><div class="site-author animated" itemprop="author" itemscope itemtype="http://schema.org/Person"><img class="site-author-image" itemprop="image" alt="小梦同学的blog" src="https://halliday.oss-cn-nanjing.aliyuncs.com/imagesbjx.png"><p class="site-author-name" itemprop="name">小梦同学的blog</p><div class="site-description" itemprop="description">欲买桂花同载酒,终不似,少年游。</div></div><div class="site-state-wrap animated"><nav class="site-state"><div class="site-state-item site-state-posts"><a href="/archives/"><span class="site-state-item-count">32</span> <span class="site-state-item-name">日志</span></a></div><div class="site-state-item site-state-tags"><a href="/tags/"><span class="site-state-item-count">46</span> <span class="site-state-item-name">标签</span></a></div></nav></div><div class="links-of-author animated"><span class="links-of-author-item"><a href="https://github.com/M-HALLIDAY" title="GitHub → https:&#x2F;&#x2F;github.com&#x2F;M-HALLIDAY" rel="noopener me" target="_blank"><i class="fab fa-github fa-fw"></i></a> </span><span class="links-of-author-item"><a href="mailto:halliday2023@163.com" title="E-Mail → mailto:halliday2023@163.com" rel="noopener me" target="_blank"><i class="fa fa-envelope fa-fw"></i></a> </span><span class="links-of-author-item"><a href="/atom.xml" title="RSS → &#x2F;atom.xml" rel="noopener me"><i class="fa fa-rss fa-fw"></i></a></span></div><div class="cc-license animated" itemprop="license"><a href="https://creativecommons.org/licenses/by-nc-sa/4.0/zh-CN" class="cc-opacity" rel="noopener" target="_blank"><img src="https://cdnjs.cloudflare.com/ajax/libs/creativecommons-vocabulary/2020.11.3/assets/license_badges/small/by_nc_sa.svg" alt="Creative Commons"></a></div></div></div></div><div class="sidebar-inner sidebar-blogroll"><div class="links-of-blogroll animated"><div class="links-of-blogroll-title"><i class="fa fa-globe fa-fw"></i> 链接</div><ul class="links-of-blogroll-list"><li class="links-of-blogroll-item"><a href="https://laosu.ml/" title="https:&#x2F;&#x2F;laosu.ml&#x2F;" rel="noopener" target="_blank">老苏的blog</a></li></ul></div></div></aside></div><div class="main-inner post posts-expand"><div class="post-block"><article itemscope itemtype="http://schema.org/Article" class="post-content" lang="zh-CN"><link itemprop="mainEntityOfPage" href="http://kiki.kim/2022/12/20/%E5%9F%BA%E4%BA%8Ebehave%E6%A1%86%E6%9E%B6%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93/"><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="https://halliday.oss-cn-nanjing.aliyuncs.com/imagesbjx.png"><meta itemprop="name" content="小梦同学的blog"></span><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="随言碎语"><meta itemprop="description" content="欲买桂花同载酒,终不似,少年游。"></span><span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork"><meta itemprop="name" content="基于behave框架的第三方库 | 随言碎语"><meta itemprop="description" content=""></span><header class="post-header"><h1 class="post-title" itemprop="name headline">基于behave框架的第三方库</h1><div class="post-meta-container"><div class="post-meta"><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-calendar"></i> </span><span class="post-meta-item-text">发表于</span> <time title="创建时间2022-12-20 18:56:34" itemprop="dateCreated datePublished" datetime="2022-12-20T18:56:34+08:00">2022-12-20</time> </span><span class="post-meta-item"><span class="post-meta-item-icon"><i class="far fa-calendar-check"></i> </span><span class="post-meta-item-text">更新于</span> <time title="修改时间2023-04-27 22:35:20" itemprop="dateModified" datetime="2023-04-27T22:35:20+08:00">2023-04-27</time> </span><span class="post-meta-item" title="阅读次数" id="busuanzi_container_page_pv"><span class="post-meta-item-icon"><i class="far fa-eye"></i> </span><span class="post-meta-item-text">阅读次数:</span> <span id="busuanzi_value_page_pv"></span> </span><span class="post-meta-break"></span> <span class="post-meta-item" title="本文字数"><span class="post-meta-item-icon"><i class="far fa-file-word"></i> </span><span class="post-meta-item-text">本文字数:</span> <span>2.7k</span> </span><span class="post-meta-item" title="阅读时长"><span class="post-meta-item-icon"><i class="far fa-clock"></i> </span><span class="post-meta-item-text">阅读时长 &asymp;</span> <span>5 分钟</span></span></div></div></header><div class="post-body" itemprop="articleBody"><p>基于behave框架的第三方库介绍</p><span id="more"></span><p>之前的文章介绍了behave的基本信息 <a href="/2022/10/10/BDD-python+behave%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E6%90%AD%E5%BB%BA/" title="BDD-python+behave自动化测试搭建">BDD-python+behave自动化测试搭建</a></p><p>目前需要自动化测试的场景一般是web ui测试、api接口测试和db数据库测试。针对这个三种场景behave分别有一些好用的第三方库。</p><h2 id="1-web-ui-自动测试--behaving"><a href="#1-web-ui-自动测试--behaving" class="headerlink" title="1. web ui 自动测试 behaving"></a>1. web ui 自动测试 behaving</h2><p>项目地址:<a target="_blank" rel="noopener" href="https://github.com/ggozad/behaving">https://github.com/ggozad/behaving</a></p><p>web浏览器上的常规操作基本上都已经实现直接安装引用即可</p><ol><li><p>安装</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pip install behaving</span><br></pre></td></tr></table></figure></li><li><p><code>environment.py</code>中引用</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> os</span><br><span class="line"><span class="keyword">from</span> behaving <span class="keyword">import</span> environment <span class="keyword">as</span> benv</span><br><span class="line"></span><br><span class="line">PERSONAS = &#123;&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">before_all</span>(<span class="params">context</span>):</span><br><span class="line"> <span class="keyword">import</span> mypackage</span><br><span class="line"> context.attachment_dir = os.path.join(os.path.dirname(mypackage.__file__), <span class="string">&#x27;tests/data&#x27;</span>)</span><br><span class="line"> context.sms_path = os.path.join(os.path.dirname(mypackage.__file__), <span class="string">&#x27;../../var/sms/&#x27;</span>)</span><br><span class="line"> context.gcm_path = os.path.join(os.path.dirname(mypackage.__file__), <span class="string">&#x27;../../var/gcm/&#x27;</span>)</span><br><span class="line"> context.mail_path = os.path.join(os.path.dirname(mypackage.__file__), <span class="string">&#x27;../../var/mail/&#x27;</span>)</span><br><span class="line"> benv.before_all(context)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">after_all</span>(<span class="params">context</span>):</span><br><span class="line"> benv.after_all(context)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">before_feature</span>(<span class="params">context, feature</span>):</span><br><span class="line"> benv.before_feature(context, feature)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">after_feature</span>(<span class="params">context, feature</span>):</span><br><span class="line"> benv.after_feature(context, feature)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">before_scenario</span>(<span class="params">context, scenario</span>):</span><br><span class="line"> benv.before_scenario(context, scenario)</span><br><span class="line"> context.personas = PERSONAS</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">after_scenario</span>(<span class="params">context, scenario</span>):</span><br><span class="line"> benv.after_scenario(context, scenario)</span><br></pre></td></tr></table></figure></li><li><p><code>step</code>中引用</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> behave <span class="keyword">import</span> when</span><br><span class="line"><span class="keyword">from</span> behaving.web.steps <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">from</span> behaving.personas.steps <span class="keyword">import</span> *</span><br><span class="line"></span><br><span class="line"><span class="meta">@when(<span class="params"><span class="string">&#x27;I go to home&#x27;</span></span>)</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">go_to_home</span>(<span class="params">context</span>):</span><br><span class="line"> context.browser.visit(<span class="string">&#x27;https://web/&#x27;</span>)</span><br></pre></td></tr></table></figure></li><li><p>查看所有的可用方法</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">behave --steps &gt;steps.log</span><br></pre></td></tr></table></figure></li></ol><h2 id="2-api接口测试--behave-http"><a href="#2-api接口测试--behave-http" class="headerlink" title="2. api接口测试 behave-http"></a>2. api接口测试 behave-http</h2><p>项目地址:<a target="_blank" rel="noopener" href="https://github.com/mikek/behave-http">https://github.com/mikek/behave-http</a></p><p>web浏览器上的常规操作基本上都已经实现直接安装引用即可</p><ol><li><p>安装</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pip install behave-http</span><br></pre></td></tr></table></figure></li><li><p><code>environment.py</code>中引用</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> behave_http.environment <span class="keyword">import</span> before_scenario</span><br></pre></td></tr></table></figure></li><li><p><code>step</code>中引用</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> behave_http.steps <span class="keyword">import</span> *</span><br></pre></td></tr></table></figure></li><li><p>查看所有的可用方法</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">behave --steps &gt;steps.log</span><br></pre></td></tr></table></figure></li></ol><h2 id="3-db数据库测试-behave-db"><a href="#3-db数据库测试-behave-db" class="headerlink" title="3. db数据库测试 behave-db"></a>3. db数据库测试 behave-db</h2><p>项目地址:<a target="_blank" rel="noopener" href="https://github.com/M-HALLIDAY/behave-db">https://github.com/M-HALLIDAY/behave-db</a></p><p>web浏览器上的常规操作基本上都已经实现直接安装引用即可</p><ol><li><p>安装</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta prompt_">$ </span><span class="language-bash">pip install behave-db</span></span><br></pre></td></tr></table></figure></li><li><p><code>environment.py</code>中引用</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line"> <span class="keyword">from</span> behave_db <span class="keyword">import</span> environment <span class="keyword">as</span> benv</span><br><span class="line"></span><br><span class="line"><span class="number">3.</span> 在`step`中引用</span><br><span class="line"></span><br><span class="line"> ```python</span><br><span class="line"> <span class="keyword">from</span> behave_db.steps <span class="keyword">import</span> *</span><br><span class="line"> <span class="keyword">def</span> <span class="title function_">before_all</span>(<span class="params">context</span>):</span><br><span class="line"> <span class="keyword">import</span> behave_db</span><br><span class="line"> config_datas = &#123;&#125;</span><br><span class="line"> <span class="comment">#jdbc-drivers in data_dir</span></span><br><span class="line"> data_dir = os.path.join(</span><br><span class="line"> os.path.dirname(behave_db.__file__), <span class="string">&quot;../../tests/data&quot;</span></span><br><span class="line"> )</span><br><span class="line"> <span class="comment">#set csv-jdbc-config</span></span><br><span class="line"> config_datas[<span class="string">&#x27;driver_name&#x27;</span>] = <span class="string">&quot;org.relique.jdbc.csv.CsvDriver&quot;</span></span><br><span class="line"> config_datas[<span class="string">&#x27;driver_jar_path&#x27;</span>] = os.path.join(data_dir,<span class="string">&quot;drivers&quot;</span>,<span class="string">&quot;csvjdbc-1.0-37.jar&quot;</span>)</span><br><span class="line"> config_datas[<span class="string">&#x27;csv_jdbc_url&#x27;</span>] = <span class="string">&quot;jdbc:relique:csv:&quot;</span> + data_dir</span><br><span class="line"> config_datas[<span class="string">&#x27;db_user&#x27;</span>] = <span class="literal">None</span></span><br><span class="line"> config_datas[<span class="string">&#x27;db_password&#x27;</span>] = <span class="literal">None</span></span><br><span class="line"> <span class="comment">#copy var to behave_db</span></span><br><span class="line"> benv.before_all(context)</span><br><span class="line"> context.db_config = config_datas</span><br><span class="line"> </span><br><span class="line"> </span><br><span class="line"> <span class="keyword">def</span> <span class="title function_">after_scenario</span>(<span class="params">context, scenario</span>):</span><br><span class="line"> <span class="comment"># auto close connect</span></span><br><span class="line"> context.execute_steps(<span class="string">u&quot;&quot;&quot;</span></span><br><span class="line"><span class="string"> When I close the connect</span></span><br><span class="line"><span class="string"> &quot;&quot;&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="number">4.</span> 查看所有的可用方法</span><br><span class="line"></span><br><span class="line"> ```python</span><br><span class="line"> behave --steps &gt;steps.log</span><br></pre></td></tr></table></figure></li></ol></div><footer class="post-footer"><div><div style="text-align:center;color:#ccc;font-size:24px;padding-top:10px">--------------------------------------- The End ---------------------------------------</div></div><div class="post-copyright"><ul><li class="post-copyright-author"><strong>本文作者: </strong>小梦同学的blog</li><li class="post-copyright-link"><strong>本文链接:</strong> <a href="http://kiki.kim/2022/12/20/%E5%9F%BA%E4%BA%8Ebehave%E6%A1%86%E6%9E%B6%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93/" title="基于behave框架的第三方库">http://kiki.kim/2022/12/20/基于behave框架的第三方库/</a></li><li class="post-copyright-license"><strong>版权声明: </strong>本博客所有文章除特别声明外,均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/zh-CN" rel="noopener" target="_blank"><i class="fab fa-fw fa-creative-commons"></i>BY-NC-SA</a> 许可协议。转载请注明出处!</li></ul></div><div class="post-tags"><a href="/tags/BDD/" rel="tag"><i class="fa fa-tag"></i> BDD</a> <a href="/tags/python/" rel="tag"><i class="fa fa-tag"></i> python</a> <a href="/tags/behave/" rel="tag"><i class="fa fa-tag"></i> behave</a> <a href="/tags/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/" rel="tag"><i class="fa fa-tag"></i> 自动化测试</a></div><script type="text/javascript">for(var tagsall=document.getElementsByClassName("post-tags"),i=tagsall.length-1;0<=i;i--)for(var tags=tagsall[i].getElementsByTagName("a"),j=tags.length-1;0<=j;j--){var r,g,b,golden_ratio=.618033988749895,s=.5,v=.999,h=golden_ratio+.8*Math.random()-.5,h_i=parseInt(6*h),f=6*h-h_i,p=v*(1-s),q=v*(1-f*s),t=v*(1-(1-f)*s);switch(h_i){case 0:r=v,g=t,b=p;break;case 1:r=q,g=v,b=p;break;case 2:r=p,g=v,b=t;break;case 3:r=p,g=q,b=v;break;case 4:r=t,g=p,b=v;break;case 5:r=v,g=p,b=q;break;default:b=g=r=1}tags[j].style.background="rgba("+parseInt(255*r)+","+parseInt(255*g)+","+parseInt(255*b)+",0.5)"}</script><div class="post-nav"><div class="post-nav-item"><a href="/2022/12/12/%E4%B8%8D%E5%90%8C%E7%9A%84docker-compose%E4%B9%8B%E9%97%B4%E7%9A%84%E7%BD%91%E7%BB%9C%E9%80%9A%E4%BF%A1/" rel="prev" title="不同的docker-compose之间的网络通信"><i class="fa fa-chevron-left"></i> 不同的docker-compose之间的网络通信</a></div><div class="post-nav-item"><a href="/2022/12/20/%E9%80%9A%E8%BF%87certbot+nginx%E7%94%B3%E8%AF%B7%E6%B3%9B%E5%9F%9F%E5%90%8D%E8%AF%81%E4%B9%A6/" rel="next" title="通过certbot+nginx申请泛域名证书">通过certbot+nginx申请泛域名证书 <i class="fa fa-chevron-right"></i></a></div></div></footer></article></div></div></main><footer class="footer"><div class="footer-inner"><div class="copyright">&copy; <span itemprop="copyrightYear">2023</span> <span class="with-love"><i class="fa fa-heart"></i> </span><span class="author" itemprop="copyrightHolder">小梦同学的blog</span></div><div class="busuanzi-count"><span class="post-meta-item" id="busuanzi_container_site_uv"><span class="post-meta-item-icon"><i class="fa fa-user"></i> </span><span class="site-uv" title="总访客量"><span id="busuanzi_value_site_uv"></span> </span></span><span class="post-meta-item" id="busuanzi_container_site_pv"><span class="post-meta-item-icon"><i class="fa fa-eye"></i> </span><span class="site-pv" title="总访问量"><span id="busuanzi_value_site_pv"></span></span></span></div><div class="powered-by"><a href="https://hexo.io/" rel="noopener" target="_blank">Hexo</a> & <a href="https://theme-next.js.org/" rel="noopener" target="_blank">NexT.Gemini</a> 强力驱动</div><span id="timeDate">载入天数...</span> <span id="times">载入时分秒...</span><script>var now=new Date;function createtime(){var n=new Date("03/01/2023 10:00:00");now.setTime(now.getTime()+250),days=(now-n)/1e3/60/60/24,dnum=Math.floor(days),hours=(now-n)/1e3/60/60-24*dnum,hnum=Math.floor(hours),1==String(hnum).length&&(hnum="0"+hnum),minutes=(now-n)/1e3/60-1440*dnum-60*hnum,mnum=Math.floor(minutes),1==String(mnum).length&&(mnum="0"+mnum),seconds=(now-n)/1e3-86400*dnum-3600*hnum-60*mnum,snum=Math.round(seconds),1==String(snum).length&&(snum="0"+snum),document.getElementById("timeDate").innerHTML="本站已安全运行 "+dnum+" 天 ",document.getElementById("times").innerHTML=hnum+" 小时 "+mnum+" 分 "+snum+" 秒."}setInterval("createtime()",250)</script></div></footer><div class="back-to-top" role="button" aria-label="返回顶部"><i class="fa fa-arrow-up fa-lg"></i> <span>0%</span></div><div class="reading-progress-bar"></div><a href="https://github.com/M-HALLIDAY" class="github-corner" title="在 GitHub 上关注我" aria-label="在 GitHub 上关注我" rel="noopener" target="_blank"><svg width="80" height="80" viewBox="0 0 250 250" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin:130px 106px" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><noscript><div class="noscript-warning">Theme NexT works best with JavaScript enabled</div></noscript><script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js" integrity="sha256-XL2inqUJaslATFnHdJOi9GfQ60on8Wx1C2H8DYiN1xY=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js" integrity="sha256-oP6HI9z1XaZNBrJURtCoUT5SUnxFr8s3BzRl+cbzUq8=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.js" integrity="sha256-yt2kYMy0w8AbtF89WXb2P1rfjcP/HTHLT7097U8Y5b8=" crossorigin="anonymous"></script><script src="/js/comments.js"></script><script src="/js/utils.js"></script><script src="/js/motion.js"></script><script src="/js/next-boot.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-generator-searchdb/1.4.1/search.js" integrity="sha256-1kfA5uHPf65M5cphT2dvymhkuyHPQp5A53EGZOnOLmc=" crossorigin="anonymous"></script><script src="/js/third-party/search/local-search.js"></script><script src="/js/third-party/fancybox.js"></script><script src="/js/third-party/pace.js"></script><script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script><script src="https://unpkg.com/darkmode-js@1.5.7/lib/darkmode-js.min.js"></script><script>var options = {
bottom: '64px',
right: 'unset',
left: '32px',
time: '0.5s',
mixColor: 'transparent',
backgroundColor: 'transparent',
buttonColorDark: '#100f2c',
buttonColorLight: '#fff',
saveInCookies: true,
label: '🌓',
autoMatchOsTheme: true
}
const darkmode = new Darkmode(options);
window.darkmode = darkmode;
darkmode.showWidget();</script><script async src="/js/cursor/love.min.js"></script><script type="text/javascript" src="//cdn.bootcss.com/canvas-nest.js/1.0.0/canvas-nest.min.js"></script></body></html>