Skip to content

Commit

Permalink
deploy: 0cbabee
Browse files Browse the repository at this point in the history
  • Loading branch information
dothinking committed Mar 30, 2024
1 parent 0bc8776 commit a126c94
Show file tree
Hide file tree
Showing 14 changed files with 261 additions and 250 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-level="2"><a href="#importerror no module named os" class="nav-link">ImportError: No module named os</a>
<li class="nav-item" data-level="2"><a href="#importerror no module named os" class="nav-link">ImportError: No module named os</a>
<ul class="nav flex-column">
</ul>
</li>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,11 +129,11 @@
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-level="2"><a href="#1" class="nav-link">官方示例 1</a>
<li class="nav-item" data-level="2"><a href="#_1" class="nav-link">官方示例</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-level="2"><a href="#_1" class="nav-link">调用自定义函数</a>
<li class="nav-item" data-level="2"><a href="#_2" class="nav-link">调用自定义函数</a>
<ul class="nav flex-column">
</ul>
</li>
Expand Down Expand Up @@ -168,7 +168,7 @@ <h2 id="mlab_1">mlab获取和安装<a class="headerlink" href="#mlab_1" title="P

<p>导入mlab库后即可方便地使用matlab函数了:</p>
<pre class="highlight"><code class="language-python">from mlab.releases import latest_release as matlab</code></pre>
<h2 id="1">官方示例 <sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup><a class="headerlink" href="#1" title="Permanent link">&para;</a></h2>
<h2 id="_1">官方示例 <sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup><a class="headerlink" href="#_1" title="Permanent link">&para;</a></h2>
<pre class="codehilite"><code>from mlab.releases import latest_release as matlab
import numpy as np

Expand All @@ -177,7 +177,7 @@ <h2 id="1">官方示例 <sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1
</code></pre>

<p><img alt="" src="../images/2015-11-15-01.png" /></p>
<h2 id="_1">调用自定义函数<a class="headerlink" href="#_1" title="Permanent link">&para;</a></h2>
<h2 id="_2">调用自定义函数<a class="headerlink" href="#_2" title="Permanent link">&para;</a></h2>
<p>当然,也可以调用自定义的matlab函数。例如新建函数文件<code>myfun.m</code>,保存在当前python代码所在目录:</p>
<pre class="codehilite"><code>function [y1, y2] = myfun(x,y)
y1 = x + 1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,11 +133,11 @@
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-level="2"><a href="#4 5" class="nav-link">开启/关闭自动计算 4 5</a>
<li class="nav-item" data-level="2"><a href="#_4" class="nav-link">开启/关闭自动计算</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-level="2"><a href="#_4" class="nav-link">引用管理</a>
<li class="nav-item" data-level="2"><a href="#_5" class="nav-link">引用管理</a>
<ul class="nav flex-column">
</ul>
</li>
Expand Down Expand Up @@ -196,7 +196,7 @@ <h2 id="_3">开启/关闭工作表保护<a class="headerlink" href="#_3" title="
# reset protection status
if status:
sheet.Protect()</code></pre>
<h2 id="4 5">开启/关闭自动计算 <sup id="fnref:4"><a class="footnote-ref" href="#fn:4">4</a></sup> <sup id="fnref:5"><a class="footnote-ref" href="#fn:5">5</a></sup><a class="headerlink" href="#4 5" title="Permanent link">&para;</a></h2>
<h2 id="_4">开启/关闭自动计算 <sup id="fnref:4"><a class="footnote-ref" href="#fn:4">4</a></sup> <sup id="fnref:5"><a class="footnote-ref" href="#fn:5">5</a></sup><a class="headerlink" href="#_4" title="Permanent link">&para;</a></h2>
<p>Excel默认开启自动计算,那么当工作表内单元格公式非常多时,每录入一个数据都将触发相关单元格的更新计算,影响操作效率。因此此种情况下,一般先设置为手动更新,待输入完成后设置自动更新。以下为示例代码:</p>
<pre class="highlight"><code class="language-python"># sample Excel and workbook
app = win32com.client.Dispatch("Excel.Application")
Expand All @@ -218,7 +218,7 @@ <h2 id="4 5">开启/关闭自动计算 <sup id="fnref:4"><a class="footnote-ref"
#
app.Calculation = -4105
wb.Application.CalculateFullRebuild()</code></pre>
<h2 id="_4">引用管理<a class="headerlink" href="#_4" title="Permanent link">&para;</a></h2>
<h2 id="_5">引用管理<a class="headerlink" href="#_5" title="Permanent link">&para;</a></h2>
<p>VBA代码可能跨工作簿引用函数,例如COM组件中的类和方法,但前期可能没有正确加载该引用。手工加载引用的流程为:<code>Developer</code> -&gt; <code>Visual basic</code> -&gt; <code>Tools</code> -&gt; <code>References...</code>,而<code>workbook.VBProject.References</code>则从程序设置的角度管理当前VBA工程已经添加的引用。</p>
<p>一个引用通常包含名称、路径、版本号等信息,我们首先可以遍历显示所有已加载引用的信息:</p>
<pre class="highlight"><code class="language-python">for ref in wb.VBProject.References:
Expand Down
16 changes: 8 additions & 8 deletions 2021-06-06-pytest参数化测试/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -125,19 +125,19 @@
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-level="2"><a href="#pytestfixture 1" class="nav-link">从pytest.fixture()开始 1</a>
<li class="nav-item" data-level="2"><a href="#pytestfixture" class="nav-link">从pytest.fixture()开始</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-level="2"><a href="#pytestmarkparametrize 2" class="nav-link">再到@pytest.mark.parametrize 2</a>
<li class="nav-item" data-level="2"><a href="#pytestmarkparametrize" class="nav-link">再到@pytest.mark.parametrize</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-level="2"><a href="#3" class="nav-link">动态生成参数化测试案例 3</a>
<li class="nav-item" data-level="2"><a href="#_2" class="nav-link">动态生成参数化测试案例</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-level="2"><a href="#4 5" class="nav-link">注册命令行参数 4 5</a>
<li class="nav-item" data-level="2"><a href="#_3" class="nav-link">注册命令行参数</a>
<ul class="nav flex-column">
</ul>
</li>
Expand All @@ -163,7 +163,7 @@ <h2 id="_1">目标场景<a class="headerlink" href="#_1" title="Permanent link">
<li>默认测试所有案例</li>
<li>如果输入参数<code>n</code>,则只测试前<code>n</code>个案例</li>
</ul>
<h2 id="pytestfixture 1">从pytest.fixture()开始 <sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup><a class="headerlink" href="#pytestfixture 1" title="Permanent link">&para;</a></h2>
<h2 id="pytestfixture">从pytest.fixture()开始 <sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup><a class="headerlink" href="#pytestfixture" title="Permanent link">&para;</a></h2>
<p>顾名思义,<code>fixture</code>是辅助测试函数的工装夹具,其中<code>params</code>参数提供了参数化输入的功能,每一个参数都会被创建为一个独立的测试案例。一个简单的例子:</p>
<pre class="highlight"><code class="language-python"># test.py
import pytest
Expand All @@ -186,7 +186,7 @@ <h2 id="pytestfixture 1">从pytest.fixture()开始 <sup id="fnref:1"><a class="f
PASSED
test.py::test[test-003] Testing test-003
PASSED</code></pre>
<h2 id="pytestmarkparametrize 2">再到@pytest.mark.parametrize <sup id="fnref:2"><a class="footnote-ref" href="#fn:2">2</a></sup><a class="headerlink" href="#pytestmarkparametrize 2" title="Permanent link">&para;</a></h2>
<h2 id="pytestmarkparametrize">再到@pytest.mark.parametrize <sup id="fnref:2"><a class="footnote-ref" href="#fn:2">2</a></sup><a class="headerlink" href="#pytestmarkparametrize" title="Permanent link">&para;</a></h2>
<p><code>fixture</code>类似,<code>pytest.mark.parametrize</code>装饰器也提供了参数化输入的功能。<code>fixture</code>例子中,测试函数的参数<code>get_input</code>是一个<code>fixture</code>,本例中<code>get_input</code>是一个自定义的参数名称。</p>
<pre class="highlight"><code class="language-python">import pytest

Expand All @@ -197,7 +197,7 @@ <h2 id="pytestmarkparametrize 2">再到@pytest.mark.parametrize <sup id="fnref:2
def test(get_input):
print(f'Testing {get_input}')</code></pre>
<p>以上两种方式都满足了 <strong>为每一个样本创建独立测试案例</strong> 的需求,然而问题是输入参数是以硬编码的方式写死的,可扩展性很差。于是,引出了下面的参数化测试方法。</p>
<h2 id="3">动态生成参数化测试案例 <sup id="fnref:3"><a class="footnote-ref" href="#fn:3">3</a></sup><a class="headerlink" href="#3" title="Permanent link">&para;</a></h2>
<h2 id="_2">动态生成参数化测试案例 <sup id="fnref:3"><a class="footnote-ref" href="#fn:3">3</a></sup><a class="headerlink" href="#_2" title="Permanent link">&para;</a></h2>
<p><code>pytest_generate_tests(metafunc)</code>是pytest自带的在收集测试函数时调用的钩子函数,以便按照自定义方式、动态地生成参数化方案。其中,<code>metafunc</code>参数可以检查请求的测试上下文,</p>
<ul>
<li>
Expand All @@ -220,7 +220,7 @@ <h2 id="3">动态生成参数化测试案例 <sup id="fnref:3"><a class="footnot
def test(get_input):
print(f'Testing {get_input}')</code></pre>
<p>这个例子不再直接给出硬编码的<code>test-001</code>~<code>test-003</code>,而是根据需要动态生成的,这为实际应用带来无限可能。但是,其中测试案例个数<code>3</code>还是硬编码方式写入的!为了实现终极目标,我们必须引入命令行参数。</p>
<h2 id="4 5">注册命令行参数 <sup id="fnref:4"><a class="footnote-ref" href="#fn:4">4</a></sup> <sup id="fnref:5"><a class="footnote-ref" href="#fn:5">5</a></sup><a class="headerlink" href="#4 5" title="Permanent link">&para;</a></h2>
<h2 id="_3">注册命令行参数 <sup id="fnref:4"><a class="footnote-ref" href="#fn:4">4</a></sup> <sup id="fnref:5"><a class="footnote-ref" href="#fn:5">5</a></sup><a class="headerlink" href="#_3" title="Permanent link">&para;</a></h2>
<p><code>pytest_addoption(parser)</code>是另一个pytest钩子函数,可以让用户注册一个自定义的命令行参数,然后通过<code>fixture</code>或其他钩子获取用户输入。</p>
<ul>
<li><code>parser.addoption</code>注册命令行参数</li>
Expand Down
Loading

0 comments on commit a126c94

Please sign in to comment.