Clarify fixture execution order and provide visual aids (#7381)
Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com> Co-authored-by: Ran Benita <ran@unusedvar.com>
1
AUTHORS
|
@ -56,6 +56,7 @@ Charles Cloud
|
||||||
Charles Machalow
|
Charles Machalow
|
||||||
Charnjit SiNGH (CCSJ)
|
Charnjit SiNGH (CCSJ)
|
||||||
Chris Lamb
|
Chris Lamb
|
||||||
|
Chris NeJame
|
||||||
Christian Boelsen
|
Christian Boelsen
|
||||||
Christian Fetzer
|
Christian Fetzer
|
||||||
Christian Neumüller
|
Christian Neumüller
|
||||||
|
|
|
@ -0,0 +1,132 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="572" height="542">
|
||||||
|
<style>
|
||||||
|
text {
|
||||||
|
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||||
|
dominant-baseline: middle;
|
||||||
|
text-anchor: middle;
|
||||||
|
fill: #062886;
|
||||||
|
font-size: medium;
|
||||||
|
}
|
||||||
|
ellipse.fixture, rect.test {
|
||||||
|
fill: #eeffcc;
|
||||||
|
stroke: #007020;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.fixture {
|
||||||
|
color: #06287e;
|
||||||
|
}
|
||||||
|
circle.class, circle.module, circle.package {
|
||||||
|
fill: #c3e0ec;
|
||||||
|
stroke: #0e84b5;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.class, text.module, text.package {
|
||||||
|
fill: #0e84b5;
|
||||||
|
}
|
||||||
|
line, path {
|
||||||
|
stroke: black;
|
||||||
|
stroke-width: 2;
|
||||||
|
fill: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- main scope -->
|
||||||
|
<circle class="package" r="270" cx="286" cy="271" />
|
||||||
|
<!-- scope name -->
|
||||||
|
<defs>
|
||||||
|
<path d="M 26,271 A 260 260 0 0 1 546 271" id="testp"/>
|
||||||
|
</defs>
|
||||||
|
<text class="package">
|
||||||
|
<textPath href="#testp" startOffset="50%">tests</textPath>
|
||||||
|
</text>
|
||||||
|
|
||||||
|
<!-- subpackage -->
|
||||||
|
<circle class="package" r="140" cx="186" cy="271" />
|
||||||
|
<!-- scope name -->
|
||||||
|
<defs>
|
||||||
|
<path d="M 56,271 A 130 130 0 0 1 316 271" id="subpackage"/>
|
||||||
|
</defs>
|
||||||
|
<text class="package">
|
||||||
|
<textPath href="#subpackage" startOffset="50%">subpackage</textPath>
|
||||||
|
</text>
|
||||||
|
|
||||||
|
<!-- test_subpackage.py -->
|
||||||
|
<circle class="module" r="90" cx="186" cy="311" />
|
||||||
|
<!-- scope name -->
|
||||||
|
<defs>
|
||||||
|
<path d="M 106,311 A 80 80 0 0 1 266 311" id="testSubpackage"/>
|
||||||
|
</defs>
|
||||||
|
<text class="module">
|
||||||
|
<textPath href="#testSubpackage" startOffset="50%">test_subpackage.py</textPath>
|
||||||
|
</text>
|
||||||
|
<!-- innermost -->
|
||||||
|
<line x1="186" x2="186" y1="271" y2="351"/>
|
||||||
|
<!-- mid -->
|
||||||
|
<path d="M 186 351 L 136 351 L 106 331 L 106 196" />
|
||||||
|
<!-- order -->
|
||||||
|
<path d="M 186 351 L 256 351 L 316 291 L 316 136" />
|
||||||
|
<!-- top -->
|
||||||
|
<path d="M 186 351 L 186 391 L 231 436 L 331 436" />
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="186" cy="271" />
|
||||||
|
<text x="186" y="271">innermost</text>
|
||||||
|
<rect class="test" width="110" height="50" x="131" y="326" />
|
||||||
|
<text x="186" y="351">test_order</text>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="126" cy="196" />
|
||||||
|
<text x="126" y="196">mid</text>
|
||||||
|
<!-- scope order number -->
|
||||||
|
<mask id="testSubpackageOrderMask">
|
||||||
|
<rect x="0" y="0" width="100%" height="100%" fill="white"/>
|
||||||
|
<circle fill="black" stroke="white" stroke-width="2" r="90" cx="186" cy="311" />
|
||||||
|
</mask>
|
||||||
|
<circle class="module" r="15" cx="96" cy="311" mask="url(#testSubpackageOrderMask)"/>
|
||||||
|
<text class="module" x="96" y="311">1</text>
|
||||||
|
<!-- scope order number -->
|
||||||
|
<mask id="subpackageOrderMask">
|
||||||
|
<rect x="0" y="0" width="100%" height="100%" fill="white"/>
|
||||||
|
<circle fill="black" stroke="white" stroke-width="2" r="140" cx="186" cy="271" />
|
||||||
|
</mask>
|
||||||
|
<circle class="module" r="15" cx="46" cy="271" mask="url(#subpackageOrderMask)"/>
|
||||||
|
<text class="module" x="46" y="271">2</text>
|
||||||
|
<!-- scope order number -->
|
||||||
|
<mask id="testsOrderMask">
|
||||||
|
<rect x="0" y="0" width="100%" height="100%" fill="white"/>
|
||||||
|
<circle fill="black" stroke="white" stroke-width="2" r="270" cx="286" cy="271" />
|
||||||
|
</mask>
|
||||||
|
<circle class="module" r="15" cx="16" cy="271" mask="url(#testsOrderMask)"/>
|
||||||
|
<text class="module" x="16" y="271">3</text>
|
||||||
|
|
||||||
|
<!-- test_top.py -->
|
||||||
|
<circle class="module" r="85" cx="441" cy="271" />
|
||||||
|
<!-- scope name -->
|
||||||
|
<defs>
|
||||||
|
<path d="M 366,271 A 75 75 0 0 1 516 271" id="testTop"/>
|
||||||
|
</defs>
|
||||||
|
<text class="module">
|
||||||
|
<textPath href="#testTop" startOffset="50%">test_top.py</textPath>
|
||||||
|
</text>
|
||||||
|
<!-- innermost -->
|
||||||
|
<line x1="441" x2="441" y1="306" y2="236"/>
|
||||||
|
<!-- order -->
|
||||||
|
<path d="M 441 306 L 376 306 L 346 276 L 346 136" />
|
||||||
|
<!-- top -->
|
||||||
|
<path d="M 441 306 L 441 411 L 411 436 L 331 436" />
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="441" cy="236" />
|
||||||
|
<text x="441" y="236">innermost</text>
|
||||||
|
<rect class="test" width="110" height="50" x="386" y="281" />
|
||||||
|
<text x="441" y="306">test_order</text>
|
||||||
|
<!-- scope order number -->
|
||||||
|
<mask id="testTopOrderMask">
|
||||||
|
<rect x="0" y="0" width="100%" height="100%" fill="white"/>
|
||||||
|
<circle fill="black" stroke="white" stroke-width="2" r="85" cx="441" cy="271" />
|
||||||
|
</mask>
|
||||||
|
<circle class="module" r="15" cx="526" cy="271" mask="url(#testTopOrderMask)"/>
|
||||||
|
<text class="module" x="526" y="271">1</text>
|
||||||
|
<!-- scope order number -->
|
||||||
|
<circle class="module" r="15" cx="556" cy="271" mask="url(#testsOrderMask)"/>
|
||||||
|
<text class="module" x="556" y="271">2</text>
|
||||||
|
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="331" cy="436" />
|
||||||
|
<text x="331" y="436">top</text>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="331" cy="136" />
|
||||||
|
<text x="331" y="136">order</text>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.9 KiB |
|
@ -0,0 +1,142 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="587" height="382">
|
||||||
|
<style>
|
||||||
|
text {
|
||||||
|
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||||
|
dominant-baseline: middle;
|
||||||
|
text-anchor: middle;
|
||||||
|
fill: #062886;
|
||||||
|
font-size: medium;
|
||||||
|
alignment-baseline: center;
|
||||||
|
}
|
||||||
|
ellipse.fixture, rect.test {
|
||||||
|
fill: #eeffcc;
|
||||||
|
stroke: #007020;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.fixture {
|
||||||
|
color: #06287e;
|
||||||
|
}
|
||||||
|
circle.class, circle.module, circle.package, circle.plugin {
|
||||||
|
fill: #c3e0ec;
|
||||||
|
stroke: #0e84b5;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.class, text.module, text.package, text.plugin {
|
||||||
|
fill: #0e84b5;
|
||||||
|
}
|
||||||
|
line, path {
|
||||||
|
stroke: black;
|
||||||
|
stroke-width: 2;
|
||||||
|
fill: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- plugin_a.py scope -->
|
||||||
|
<circle class="plugin" r="85" cx="486" cy="86" />
|
||||||
|
<!-- plugin name -->
|
||||||
|
<defs>
|
||||||
|
<path d="M 411,86 A 75 75 0 0 1 561 86" id="pluginA"/>
|
||||||
|
</defs>
|
||||||
|
<text class="plugin">
|
||||||
|
<textPath href="#pluginA" startOffset="50%">plugin_a</textPath>
|
||||||
|
</text>
|
||||||
|
<!-- scope order number -->
|
||||||
|
<mask id="pluginAOrderMask">
|
||||||
|
<rect x="0" y="0" width="100%" height="100%" fill="white"/>
|
||||||
|
<circle fill="black" stroke="white" stroke-width="2" r="85" cx="486" cy="86" />
|
||||||
|
</mask>
|
||||||
|
<circle class="module" r="15" cx="571" cy="86" mask="url(#pluginAOrderMask)"/>
|
||||||
|
<text class="module" x="571" y="86">4</text>
|
||||||
|
|
||||||
|
<!-- plugin_b.py scope -->
|
||||||
|
<circle class="plugin" r="85" cx="486" cy="296" />
|
||||||
|
<!-- plugin name -->
|
||||||
|
<defs>
|
||||||
|
<path d="M 411,296 A 75 75 0 0 1 561 296" id="pluginB"/>
|
||||||
|
</defs>
|
||||||
|
<text class="plugin">
|
||||||
|
<textPath href="#pluginB" startOffset="50%">plugin_b</textPath>
|
||||||
|
</text>
|
||||||
|
<!-- scope order number -->
|
||||||
|
<mask id="pluginBOrderMask">
|
||||||
|
<rect x="0" y="0" width="100%" height="100%" fill="white"/>
|
||||||
|
<circle fill="black" stroke="white" stroke-width="2" r="85" cx="486" cy="296" />
|
||||||
|
</mask>
|
||||||
|
<circle class="module" r="15" cx="571" cy="296" mask="url(#pluginBOrderMask)"/>
|
||||||
|
<text class="module" x="571" y="296">4</text>
|
||||||
|
|
||||||
|
<!-- main scope -->
|
||||||
|
<circle class="package" r="190" cx="191" cy="191" />
|
||||||
|
<!-- scope name -->
|
||||||
|
<defs>
|
||||||
|
<path d="M 11,191 A 180 180 0 0 1 371 191" id="testp"/>
|
||||||
|
</defs>
|
||||||
|
<text class="package">
|
||||||
|
<textPath href="#testp" startOffset="50%">tests</textPath>
|
||||||
|
</text>
|
||||||
|
<!-- scope order number -->
|
||||||
|
<mask id="mainOrderMask">
|
||||||
|
<rect x="0" y="0" width="100%" height="100%" fill="white"/>
|
||||||
|
<circle fill="black" stroke="white" stroke-width="2" r="190" cx="191" cy="191" />
|
||||||
|
</mask>
|
||||||
|
<circle class="module" r="15" cx="381" cy="191" mask="url(#mainOrderMask)"/>
|
||||||
|
<text class="module" x="381" y="191">3</text>
|
||||||
|
|
||||||
|
<!-- subpackage -->
|
||||||
|
<circle class="package" r="140" cx="191" cy="231" />
|
||||||
|
<!-- scope name -->
|
||||||
|
<defs>
|
||||||
|
<path d="M 61,231 A 130 130 0 0 1 321 231" id="subpackage"/>
|
||||||
|
</defs>
|
||||||
|
<text class="package">
|
||||||
|
<textPath href="#subpackage" startOffset="50%">subpackage</textPath>
|
||||||
|
</text>
|
||||||
|
<!-- scope order number -->
|
||||||
|
<mask id="subpackageOrderMask">
|
||||||
|
<rect x="0" y="0" width="100%" height="100%" fill="white"/>
|
||||||
|
<circle fill="black" stroke="white" stroke-width="2" r="140" cx="191" cy="231" />
|
||||||
|
</mask>
|
||||||
|
<circle class="module" r="15" cx="331" cy="231" mask="url(#subpackageOrderMask)"/>
|
||||||
|
<text class="module" x="331" y="231">2</text>
|
||||||
|
|
||||||
|
<!-- test_subpackage.py -->
|
||||||
|
<circle class="module" r="90" cx="191" cy="271" />
|
||||||
|
<!-- scope name -->
|
||||||
|
<defs>
|
||||||
|
<path d="M 111,271 A 80 80 0 0 1 271 271" id="testSubpackage"/>
|
||||||
|
</defs>
|
||||||
|
<text class="module">
|
||||||
|
<textPath href="#testSubpackage" startOffset="50%">test_subpackage.py</textPath>
|
||||||
|
</text>
|
||||||
|
<!-- scope order number -->
|
||||||
|
<mask id="testSubpackageOrderMask">
|
||||||
|
<rect x="0" y="0" width="100%" height="100%" fill="white"/>
|
||||||
|
<circle fill="black" stroke="white" stroke-width="2" r="90" cx="191" cy="271" />
|
||||||
|
</mask>
|
||||||
|
<circle class="module" r="15" cx="281" cy="271" mask="url(#testSubpackageOrderMask)"/>
|
||||||
|
<text class="module" x="281" y="271">1</text>
|
||||||
|
|
||||||
|
<!-- innermost -->
|
||||||
|
<line x1="191" x2="191" y1="231" y2="311"/>
|
||||||
|
<!-- mid -->
|
||||||
|
<path d="M 191 306 L 101 306 L 91 296 L 91 156 L 101 146 L 191 146" />
|
||||||
|
<!-- order -->
|
||||||
|
<path d="M 191 316 L 91 316 L 81 306 L 81 61 L 91 51 L 191 51" />
|
||||||
|
<!-- a_fix -->
|
||||||
|
<path d="M 191 306 L 291 306 L 301 296 L 301 96 L 311 86 L 486 86" />
|
||||||
|
<!-- b_fix -->
|
||||||
|
<path d="M 191 316 L 316 316 L 336 296 L 486 296" />
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="191" cy="231" />
|
||||||
|
<text x="191" y="231">inner</text>
|
||||||
|
<rect class="test" width="110" height="50" x="136" y="286" />
|
||||||
|
<text x="191" y="311">test_order</text>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="191" cy="146" />
|
||||||
|
<text x="191" y="146">mid</text>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="191" cy="51" />
|
||||||
|
<text x="191" y="51">order</text>
|
||||||
|
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="486" cy="86" />
|
||||||
|
<text x="486" y="86">a_fix</text>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="486" cy="296" />
|
||||||
|
<text x="486" y="296">b_fix</text>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.3 KiB |
|
@ -1,38 +0,0 @@
|
||||||
import pytest
|
|
||||||
|
|
||||||
# fixtures documentation order example
|
|
||||||
order = []
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="session")
|
|
||||||
def s1():
|
|
||||||
order.append("s1")
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="module")
|
|
||||||
def m1():
|
|
||||||
order.append("m1")
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def f1(f3):
|
|
||||||
order.append("f1")
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def f3():
|
|
||||||
order.append("f3")
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(autouse=True)
|
|
||||||
def a1():
|
|
||||||
order.append("a1")
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def f2():
|
|
||||||
order.append("f2")
|
|
||||||
|
|
||||||
|
|
||||||
def test_order(f1, m1, f2, s1):
|
|
||||||
assert order == ["s1", "m1", "a1", "f3", "f1", "f2"]
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def order():
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def a(order):
|
||||||
|
order.append("a")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def b(a, order):
|
||||||
|
order.append("b")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(autouse=True)
|
||||||
|
def c(b, order):
|
||||||
|
order.append("c")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def d(b, order):
|
||||||
|
order.append("d")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def e(d, order):
|
||||||
|
order.append("e")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def f(e, order):
|
||||||
|
order.append("f")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def g(f, c, order):
|
||||||
|
order.append("g")
|
||||||
|
|
||||||
|
|
||||||
|
def test_order_and_g(g, order):
|
||||||
|
assert order == ["a", "b", "c", "d", "e", "f", "g"]
|
|
@ -0,0 +1,64 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="252" height="682">
|
||||||
|
<style>
|
||||||
|
text {
|
||||||
|
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||||
|
dominant-baseline: middle;
|
||||||
|
text-anchor: middle;
|
||||||
|
fill: #062886;
|
||||||
|
font-size: medium;
|
||||||
|
}
|
||||||
|
ellipse.fixture, rect.test {
|
||||||
|
fill: #eeffcc;
|
||||||
|
stroke: #007020;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.fixture {
|
||||||
|
color: #06287e;
|
||||||
|
}
|
||||||
|
circle.class {
|
||||||
|
fill: #c3e0ec;
|
||||||
|
stroke: #0e84b5;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.class {
|
||||||
|
fill: #0e84b5;
|
||||||
|
}
|
||||||
|
path, line {
|
||||||
|
stroke: black;
|
||||||
|
stroke-width: 2;
|
||||||
|
fill: none;
|
||||||
|
}
|
||||||
|
rect.autouse {
|
||||||
|
fill: #ca7f3d;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<path d="M126,586 L26,506 L26,236" />
|
||||||
|
<path d="M226,446 L226,236 L126,166" />
|
||||||
|
<line x1="126" x2="126" y1="656" y2="516" />
|
||||||
|
<line x1="126" x2="226" y1="516" y2="446" />
|
||||||
|
<line x1="226" x2="126" y1="446" y2="376" />
|
||||||
|
<line x1="126" x2="126" y1="376" y2="166" />
|
||||||
|
<line x1="26" x2="126" y1="236" y2="166" />
|
||||||
|
<line x1="126" x2="126" y1="166" y2="26" />
|
||||||
|
<line x1="126" x2="126" y1="96" y2="26" />
|
||||||
|
<rect class="autouse" width="251" height="40" x="0" y="286" />
|
||||||
|
<text x="126" y="306">autouse</text>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="126" cy="26" />
|
||||||
|
<text x="126" y="26">order</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="126" cy="96" />
|
||||||
|
<text x="126" y="96">a</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="126" cy="166" />
|
||||||
|
<text x="126" y="166">b</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="26" cy="236" />
|
||||||
|
<text x="26" y="236">c</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="126" cy="376" />
|
||||||
|
<text x="126" y="376">d</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="226" cy="446" />
|
||||||
|
<text x="226" y="446">e</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="126" cy="516" />
|
||||||
|
<text x="126" y="516">f</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="126" cy="586" />
|
||||||
|
<text x="126" y="586">g</text>
|
||||||
|
<rect class="test" width="110" height="50" x="71" y="631" />
|
||||||
|
<text x="126" y="656">test_order</text>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.3 KiB |
|
@ -0,0 +1,31 @@
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="class")
|
||||||
|
def order():
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="class", autouse=True)
|
||||||
|
def c1(order):
|
||||||
|
order.append("c1")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="class")
|
||||||
|
def c2(order):
|
||||||
|
order.append("c2")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="class")
|
||||||
|
def c3(order, c1):
|
||||||
|
order.append("c3")
|
||||||
|
|
||||||
|
|
||||||
|
class TestClassWithC1Request:
|
||||||
|
def test_order(self, order, c1, c3):
|
||||||
|
assert order == ["c1", "c3"]
|
||||||
|
|
||||||
|
|
||||||
|
class TestClassWithoutC1Request:
|
||||||
|
def test_order(self, order, c2):
|
||||||
|
assert order == ["c1", "c2"]
|
|
@ -0,0 +1,76 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="862" height="402">
|
||||||
|
<style>
|
||||||
|
text {
|
||||||
|
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||||
|
dominant-baseline: middle;
|
||||||
|
text-anchor: middle;
|
||||||
|
fill: #062886;
|
||||||
|
font-size: medium;
|
||||||
|
}
|
||||||
|
ellipse.fixture, rect.test {
|
||||||
|
fill: #eeffcc;
|
||||||
|
stroke: #007020;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.fixture {
|
||||||
|
color: #06287e;
|
||||||
|
}
|
||||||
|
circle.class {
|
||||||
|
fill: #c3e0ec;
|
||||||
|
stroke: #0e84b5;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.class {
|
||||||
|
fill: #0e84b5;
|
||||||
|
}
|
||||||
|
line {
|
||||||
|
stroke: black;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
rect.autouse {
|
||||||
|
fill: #ca7f3d;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- TestWithC1Request -->
|
||||||
|
<circle class="class" r="200" cx="221" cy="201" />
|
||||||
|
<line x1="221" x2="221" y1="61" y2="316"/>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="221" cy="61" />
|
||||||
|
<text x="221" y="61">order</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="221" cy="131" />
|
||||||
|
<text x="221" y="131">c1</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="221" cy="271" />
|
||||||
|
<text x="221" y="271">c3</text>
|
||||||
|
<rect class="test" width="110" height="50" x="166" y="316" />
|
||||||
|
<text x="221" y="341">test_order</text>
|
||||||
|
<!-- scope name -->
|
||||||
|
<defs>
|
||||||
|
<path d="M31,201 A 190 190 0 0 1 411 201" id="testClassWith"/>
|
||||||
|
</defs>
|
||||||
|
<text class="class">
|
||||||
|
<textPath href="#testClassWith" startOffset="50%">TestWithC1Request</textPath>
|
||||||
|
</text>
|
||||||
|
|
||||||
|
<!-- TestWithoutC1Request -->
|
||||||
|
<circle class="class" r="200" cx="641" cy="201" />
|
||||||
|
<line x1="641" x2="641" y1="61" y2="316"/>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="641" cy="61" />
|
||||||
|
<text x="641" y="61">order</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="641" cy="131" />
|
||||||
|
<text x="641" y="131">c1</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="641" cy="271" />
|
||||||
|
<text x="641" y="271">c2</text>
|
||||||
|
<rect class="test" width="110" height="50" x="586" y="316" />
|
||||||
|
<text x="641" y="341">test_order</text>
|
||||||
|
<!-- scope name -->
|
||||||
|
<defs>
|
||||||
|
<path d="M451,201 A 190 190 0 0 1 831 201" id="testClassWithout"/>
|
||||||
|
</defs>
|
||||||
|
<text class="class">
|
||||||
|
<textPath href="#testClassWithout" startOffset="50%">TestWithoutC1Request</textPath>
|
||||||
|
</text>
|
||||||
|
|
||||||
|
<rect class="autouse" width="862" height="40" x="1" y="181" />
|
||||||
|
<rect width="10" height="100" class="autouse" x="426" y="151" />
|
||||||
|
<text x="431" y="201">autouse</text>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.6 KiB |
|
@ -0,0 +1,36 @@
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def order():
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def c1(order):
|
||||||
|
order.append("c1")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def c2(order):
|
||||||
|
order.append("c2")
|
||||||
|
|
||||||
|
|
||||||
|
class TestClassWithAutouse:
|
||||||
|
@pytest.fixture(autouse=True)
|
||||||
|
def c3(self, order, c2):
|
||||||
|
order.append("c3")
|
||||||
|
|
||||||
|
def test_req(self, order, c1):
|
||||||
|
assert order == ["c2", "c3", "c1"]
|
||||||
|
|
||||||
|
def test_no_req(self, order):
|
||||||
|
assert order == ["c2", "c3"]
|
||||||
|
|
||||||
|
|
||||||
|
class TestClassWithoutAutouse:
|
||||||
|
def test_req(self, order, c1):
|
||||||
|
assert order == ["c1"]
|
||||||
|
|
||||||
|
def test_no_req(self, order):
|
||||||
|
assert order == []
|
|
@ -0,0 +1,100 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="862" height="502">
|
||||||
|
<style>
|
||||||
|
text {
|
||||||
|
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||||
|
dominant-baseline: middle;
|
||||||
|
text-anchor: middle;
|
||||||
|
fill: #062886;
|
||||||
|
font-size: medium;
|
||||||
|
}
|
||||||
|
ellipse.fixture, rect.test {
|
||||||
|
fill: #eeffcc;
|
||||||
|
stroke: #007020;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.fixture {
|
||||||
|
color: #06287e;
|
||||||
|
}
|
||||||
|
circle.class {
|
||||||
|
fill: #c3e0ec;
|
||||||
|
stroke: #0e84b5;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.class {
|
||||||
|
fill: #0e84b5;
|
||||||
|
}
|
||||||
|
line {
|
||||||
|
stroke: black;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
rect.autouse {
|
||||||
|
fill: #ca7f3d;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!-- TestWithAutouse -->
|
||||||
|
<circle class="class" r="250" cx="251" cy="251" />
|
||||||
|
<!-- scope name -->
|
||||||
|
<defs>
|
||||||
|
<path d="M11,251 A 240 240 0 0 1 491 251" id="testClassWith"/>
|
||||||
|
</defs>
|
||||||
|
<text class="class">
|
||||||
|
<textPath href="#testClassWith" startOffset="50%">TestWithAutouse</textPath>
|
||||||
|
</text>
|
||||||
|
<mask id="autouseScope">
|
||||||
|
<circle fill="white" r="249" cx="251" cy="251" />
|
||||||
|
</mask>
|
||||||
|
|
||||||
|
<!-- TestWithAutouse.test_req -->
|
||||||
|
<line x1="176" x2="176" y1="76" y2="426"/>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="176" cy="76" />
|
||||||
|
<text x="176" y="76">order</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="176" cy="146" />
|
||||||
|
<text x="176" y="146">c2</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="176" cy="216" />
|
||||||
|
<text x="176" y="216">c3</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="176" cy="356" />
|
||||||
|
<text x="176" y="356">c1</text>
|
||||||
|
<rect class="test" width="100" height="50" x="126" y="401" />
|
||||||
|
<text x="176" y="426">test_req</text>
|
||||||
|
|
||||||
|
<!-- TestWithAutouse.test_no_req -->
|
||||||
|
<line x1="326" x2="326" y1="76" y2="346"/>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="326" cy="76" />
|
||||||
|
<text x="326" y="76">order</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="326" cy="146" />
|
||||||
|
<text x="326" y="146">c2</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="326" cy="216" />
|
||||||
|
<text x="326" y="216">c3</text>
|
||||||
|
<rect class="test" width="120" height="50" x="266" y="331" />
|
||||||
|
<text x="326" y="356">test_no_req</text>
|
||||||
|
|
||||||
|
<rect class="autouse" width="500" height="40" x="1" y="266" mask="url(#autouseScope)"/>
|
||||||
|
<text x="261" y="286">autouse</text>
|
||||||
|
|
||||||
|
<!-- TestWithoutAutouse -->
|
||||||
|
<circle class="class" r="170" cx="691" cy="251" />
|
||||||
|
<!-- scope name -->
|
||||||
|
<defs>
|
||||||
|
<path d="M 531,251 A 160 160 0 0 1 851 251" id="testClassWithout"/>
|
||||||
|
</defs>
|
||||||
|
<text class="class">
|
||||||
|
<textPath href="#testClassWithout" startOffset="50%">TestWithoutAutouse</textPath>
|
||||||
|
</text>
|
||||||
|
|
||||||
|
<!-- TestWithoutAutouse.test_req -->
|
||||||
|
<line x1="616" x2="616" y1="181" y2="321"/>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="616" cy="181" />
|
||||||
|
<text x="616" y="181">order</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="616" cy="251" />
|
||||||
|
<text x="616" y="251">c1</text>
|
||||||
|
<rect class="test" width="100" height="50" x="566" y="296" />
|
||||||
|
<text x="616" y="321">test_req</text>
|
||||||
|
|
||||||
|
<!-- TestWithoutAutouse.test_no_req -->
|
||||||
|
<line x1="766" x2="766" y1="181" y2="251"/>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="766" cy="181" />
|
||||||
|
<text x="766" y="181">order</text>
|
||||||
|
<rect class="test" width="120" height="50" x="706" y="226" />
|
||||||
|
<text x="766" y="251">test_no_req</text>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.5 KiB |
|
@ -0,0 +1,45 @@
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def order():
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def a(order):
|
||||||
|
order.append("a")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def b(a, order):
|
||||||
|
order.append("b")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def c(a, b, order):
|
||||||
|
order.append("c")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def d(c, b, order):
|
||||||
|
order.append("d")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def e(d, b, order):
|
||||||
|
order.append("e")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def f(e, order):
|
||||||
|
order.append("f")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def g(f, c, order):
|
||||||
|
order.append("g")
|
||||||
|
|
||||||
|
|
||||||
|
def test_order(g, order):
|
||||||
|
assert order == ["a", "b", "c", "d", "e", "f", "g"]
|
|
@ -0,0 +1,60 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="252" height="612">
|
||||||
|
<style>
|
||||||
|
text {
|
||||||
|
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||||
|
dominant-baseline: middle;
|
||||||
|
text-anchor: middle;
|
||||||
|
fill: #062886;
|
||||||
|
font-size: medium;
|
||||||
|
}
|
||||||
|
ellipse.fixture, rect.test {
|
||||||
|
fill: #eeffcc;
|
||||||
|
stroke: #007020;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.fixture {
|
||||||
|
color: #06287e;
|
||||||
|
}
|
||||||
|
circle.class {
|
||||||
|
fill: #c3e0ec;
|
||||||
|
stroke: #0e84b5;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.class {
|
||||||
|
fill: #0e84b5;
|
||||||
|
}
|
||||||
|
path, line {
|
||||||
|
stroke: black;
|
||||||
|
stroke-width: 2;
|
||||||
|
fill: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<path d="M126,516 L26,436 L26,236" />
|
||||||
|
<path d="M226,376 L226,236 L126,166" />
|
||||||
|
<line x1="126" x2="126" y1="586" y2="446" />
|
||||||
|
<line x1="126" x2="226" y1="446" y2="376" />
|
||||||
|
<line x1="226" x2="126" y1="376" y2="306" />
|
||||||
|
<line x1="126" x2="26" y1="306" y2="236" />
|
||||||
|
<line x1="126" x2="126" y1="306" y2="166" />
|
||||||
|
<line x1="26" x2="126" y1="236" y2="166" />
|
||||||
|
<line x1="126" x2="126" y1="166" y2="26" />
|
||||||
|
<line x1="126" x2="126" y1="96" y2="26" />
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="126" cy="26" />
|
||||||
|
<text x="126" y="26">order</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="126" cy="96" />
|
||||||
|
<text x="126" y="96">a</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="126" cy="166" />
|
||||||
|
<text x="126" y="166">b</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="26" cy="236" />
|
||||||
|
<text x="26" y="236">c</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="126" cy="306" />
|
||||||
|
<text x="126" y="306">d</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="226" cy="376" />
|
||||||
|
<text x="226" y="376">e</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="126" cy="446" />
|
||||||
|
<text x="126" y="446">f</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="126" cy="516" />
|
||||||
|
<text x="126" y="516">g</text>
|
||||||
|
<rect class="test" width="110" height="50" x="71" y="561" />
|
||||||
|
<text x="126" y="586">test_order</text>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
|
@ -0,0 +1,51 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="112" height="612">
|
||||||
|
<style>
|
||||||
|
text {
|
||||||
|
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||||
|
dominant-baseline: middle;
|
||||||
|
text-anchor: middle;
|
||||||
|
fill: #062886;
|
||||||
|
font-size: medium;
|
||||||
|
}
|
||||||
|
ellipse.fixture, rect.test {
|
||||||
|
fill: #eeffcc;
|
||||||
|
stroke: #007020;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.fixture {
|
||||||
|
color: #06287e;
|
||||||
|
}
|
||||||
|
circle.class {
|
||||||
|
fill: #c3e0ec;
|
||||||
|
stroke: #0e84b5;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.class {
|
||||||
|
fill: #0e84b5;
|
||||||
|
}
|
||||||
|
path, line {
|
||||||
|
stroke: black;
|
||||||
|
stroke-width: 2;
|
||||||
|
fill: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<line x1="56" x2="56" y1="611" y2="26" />
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="56" cy="26" />
|
||||||
|
<text x="56" y="26">order</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="56" cy="96" />
|
||||||
|
<text x="56" y="96">a</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="56" cy="166" />
|
||||||
|
<text x="56" y="166">b</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="56" cy="236" />
|
||||||
|
<text x="56" y="236">c</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="56" cy="306" />
|
||||||
|
<text x="56" y="306">d</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="56" cy="376" />
|
||||||
|
<text x="56" y="376">e</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="56" cy="446" />
|
||||||
|
<text x="56" y="446">f</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="56" cy="516" />
|
||||||
|
<text x="56" y="516">g</text>
|
||||||
|
<rect class="test" width="110" height="50" x="1" y="561" />
|
||||||
|
<text x="56" y="586">test_order</text>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1,60 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="252" height="542">
|
||||||
|
<style>
|
||||||
|
text {
|
||||||
|
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||||
|
dominant-baseline: middle;
|
||||||
|
text-anchor: middle;
|
||||||
|
fill: #062886;
|
||||||
|
font-size: medium;
|
||||||
|
}
|
||||||
|
ellipse.fixture, rect.test {
|
||||||
|
fill: #eeffcc;
|
||||||
|
stroke: #007020;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.fixture {
|
||||||
|
color: #06287e;
|
||||||
|
}
|
||||||
|
circle.class {
|
||||||
|
fill: #c3e0ec;
|
||||||
|
stroke: #0e84b5;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.class {
|
||||||
|
fill: #0e84b5;
|
||||||
|
}
|
||||||
|
path, line {
|
||||||
|
stroke: black;
|
||||||
|
stroke-width: 2;
|
||||||
|
fill: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<path d="M126,446 L26,376 L26,236" />
|
||||||
|
<path d="M226,306 L126,236 L126,166" />
|
||||||
|
<line x1="126" x2="126" y1="516" y2="446" />
|
||||||
|
<line x1="226" x2="226" y1="376" y2="306" />
|
||||||
|
<line x1="226" x2="226" y1="306" y2="236" />
|
||||||
|
<line x1="226" x2="126" y1="236" y2="166" />
|
||||||
|
<line x1="126" x2="226" y1="446" y2="376" />
|
||||||
|
<line x1="26" x2="126" y1="236" y2="166" />
|
||||||
|
<line x1="126" x2="126" y1="166" y2="96" />
|
||||||
|
<line x1="126" x2="126" y1="96" y2="26" />
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="126" cy="26" />
|
||||||
|
<text x="126" y="26">order</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="126" cy="96" />
|
||||||
|
<text x="126" y="96">a</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="126" cy="166" />
|
||||||
|
<text x="126" y="166">b</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="26" cy="236" />
|
||||||
|
<text x="26" y="236">c</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="226" cy="236" />
|
||||||
|
<text x="226" y="236">d</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="226" cy="306" />
|
||||||
|
<text x="226" y="306">e</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="226" cy="376" />
|
||||||
|
<text x="226" y="376">f</text>
|
||||||
|
<ellipse class="fixture" rx="25" ry="25" cx="126" cy="446" />
|
||||||
|
<text x="126" y="446">g</text>
|
||||||
|
<rect class="test" width="110" height="50" x="71" y="491" />
|
||||||
|
<text x="126" y="516">test_order</text>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.2 KiB |
|
@ -0,0 +1,36 @@
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="session")
|
||||||
|
def order():
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def func(order):
|
||||||
|
order.append("function")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="class")
|
||||||
|
def cls(order):
|
||||||
|
order.append("class")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="module")
|
||||||
|
def mod(order):
|
||||||
|
order.append("module")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="package")
|
||||||
|
def pack(order):
|
||||||
|
order.append("package")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="session")
|
||||||
|
def sess(order):
|
||||||
|
order.append("session")
|
||||||
|
|
||||||
|
|
||||||
|
class TestClass:
|
||||||
|
def test_order(self, func, cls, mod, pack, sess, order):
|
||||||
|
assert order == ["session", "package", "module", "class", "function"]
|
|
@ -0,0 +1,55 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="262" height="537">
|
||||||
|
<style>
|
||||||
|
text {
|
||||||
|
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||||
|
dominant-baseline: middle;
|
||||||
|
text-anchor: middle;
|
||||||
|
fill: #062886;
|
||||||
|
font-size: medium;
|
||||||
|
}
|
||||||
|
ellipse.fixture, rect.test {
|
||||||
|
fill: #eeffcc;
|
||||||
|
stroke: #007020;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.fixture {
|
||||||
|
color: #06287e;
|
||||||
|
}
|
||||||
|
circle.class {
|
||||||
|
fill: #c3e0ec;
|
||||||
|
stroke: #0e84b5;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.class {
|
||||||
|
fill: #0e84b5;
|
||||||
|
}
|
||||||
|
line {
|
||||||
|
stroke: black;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<!-- TestClass -->
|
||||||
|
<circle class="class" r="130" cx="131" cy="406" />
|
||||||
|
<line x1="131" x2="131" y1="21" y2="446"/>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="131" cy="26" />
|
||||||
|
<text x="131" y="26">order</text>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="131" cy="96" />
|
||||||
|
<text x="131" y="96">sess</text>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="131" cy="166" />
|
||||||
|
<text x="131" y="166">pack</text>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="131" cy="236" />
|
||||||
|
<text x="131" y="236">mod</text>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="131" cy="306" />
|
||||||
|
<text x="131" y="306">cls</text>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="131" cy="376" />
|
||||||
|
<text x="131" y="376">func</text>
|
||||||
|
<rect class="test" width="110" height="50" x="76" y="421" />
|
||||||
|
<text x="131" y="446">test_order</text>
|
||||||
|
<!-- scope name -->
|
||||||
|
<defs>
|
||||||
|
<path d="M131,526 A 120 120 0 0 1 136 286" id="testClass"/>
|
||||||
|
</defs>
|
||||||
|
<text class="class">
|
||||||
|
<textPath href="#testClass" startOffset="50%">TestClass</textPath>
|
||||||
|
</text>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.8 KiB |
|
@ -0,0 +1,29 @@
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def order():
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def outer(order, inner):
|
||||||
|
order.append("outer")
|
||||||
|
|
||||||
|
|
||||||
|
class TestOne:
|
||||||
|
@pytest.fixture
|
||||||
|
def inner(self, order):
|
||||||
|
order.append("one")
|
||||||
|
|
||||||
|
def test_order(self, order, outer):
|
||||||
|
assert order == ["one", "outer"]
|
||||||
|
|
||||||
|
|
||||||
|
class TestTwo:
|
||||||
|
@pytest.fixture
|
||||||
|
def inner(self, order):
|
||||||
|
order.append("two")
|
||||||
|
|
||||||
|
def test_order(self, order, outer):
|
||||||
|
assert order == ["two", "outer"]
|
|
@ -0,0 +1,115 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="562" height="532">
|
||||||
|
<style>
|
||||||
|
text {
|
||||||
|
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
|
||||||
|
dominant-baseline: middle;
|
||||||
|
text-anchor: middle;
|
||||||
|
fill: #062886;
|
||||||
|
font-size: medium;
|
||||||
|
}
|
||||||
|
ellipse.fixture, rect.test {
|
||||||
|
fill: #eeffcc;
|
||||||
|
stroke: #007020;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.fixture {
|
||||||
|
color: #06287e;
|
||||||
|
}
|
||||||
|
circle.class {
|
||||||
|
fill: #c3e0ec;
|
||||||
|
stroke: #0e84b5;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
circle.module {
|
||||||
|
fill: #c3e0ec;
|
||||||
|
stroke: #0e84b5;
|
||||||
|
stroke-width: 2;
|
||||||
|
}
|
||||||
|
text.class, text.module {
|
||||||
|
fill: #0e84b5;
|
||||||
|
}
|
||||||
|
line, path {
|
||||||
|
stroke: black;
|
||||||
|
stroke-width: 2;
|
||||||
|
fill: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<!-- main scope -->
|
||||||
|
<circle class="module" r="265" cx="281" cy="266" />
|
||||||
|
<!-- scope name -->
|
||||||
|
<defs>
|
||||||
|
<path d="M 26,266 A 255 255 0 0 1 536 266" id="testModule"/>
|
||||||
|
</defs>
|
||||||
|
<text class="module">
|
||||||
|
<textPath href="#testModule" startOffset="50%">test_fixtures_request_different_scope.py</textPath>
|
||||||
|
</text>
|
||||||
|
|
||||||
|
<!-- TestOne -->
|
||||||
|
<circle class="class" r="100" cx="141" cy="266" />
|
||||||
|
<!-- inner -->
|
||||||
|
<line x1="141" x2="141" y1="231" y2="301"/>
|
||||||
|
<!-- order -->
|
||||||
|
<path d="M 141 296 L 201 296 L 211 286 L 211 146 L 221 136 L 281 136" />
|
||||||
|
<!-- outer -->
|
||||||
|
<path d="M 141 306 L 201 306 L 211 316 L 211 386 L 221 396 L 281 396" />
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="141" cy="231" />
|
||||||
|
<text x="141" y="231">inner</text>
|
||||||
|
<rect class="test" width="110" height="50" x="86" y="276" />
|
||||||
|
<text x="141" y="301">test_order</text>
|
||||||
|
<!-- scope name -->
|
||||||
|
<defs>
|
||||||
|
<path d="M 51,266 A 90 90 0 0 1 231 266" id="testOne"/>
|
||||||
|
</defs>
|
||||||
|
<text class="class">
|
||||||
|
<textPath href="#testOne" startOffset="50%">TestOne</textPath>
|
||||||
|
</text>
|
||||||
|
<!-- scope order number -->
|
||||||
|
<mask id="testOneOrderMask">
|
||||||
|
<rect x="0" y="0" width="100%" height="100%" fill="white"/>
|
||||||
|
<circle fill="black" stroke="white" stroke-width="2" r="100" cx="141" cy="266" />
|
||||||
|
</mask>
|
||||||
|
<circle class="module" r="15" cx="41" cy="266" mask="url(#testOneOrderMask)"/>
|
||||||
|
<text class="module" x="41" y="266">1</text>
|
||||||
|
<!-- scope order number -->
|
||||||
|
<mask id="testMainOrderMask">
|
||||||
|
<rect x="0" y="0" width="100%" height="100%" fill="white"/>
|
||||||
|
<circle fill="black" stroke="white" stroke-width="2" r="265" cx="281" cy="266" />
|
||||||
|
</mask>
|
||||||
|
<circle class="module" r="15" cx="16" cy="266" mask="url(#testMainOrderMask)"/>
|
||||||
|
<text class="module" x="16" y="266">2</text>
|
||||||
|
|
||||||
|
<!-- TestTwo -->
|
||||||
|
<circle class="class" r="100" cx="421" cy="266" />
|
||||||
|
<!-- inner -->
|
||||||
|
<line x1="421" x2="421" y1="231" y2="301"/>
|
||||||
|
<!-- order -->
|
||||||
|
<path d="M 421 296 L 361 296 L 351 286 L 351 146 L 341 136 L 281 136" />
|
||||||
|
<!-- outer -->
|
||||||
|
<path d="M 421 306 L 361 306 L 351 316 L 351 386 L 341 396 L 281 396" />
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="421" cy="231" />
|
||||||
|
<text x="421" y="231">inner</text>
|
||||||
|
<rect class="test" width="110" height="50" x="366" y="276" />
|
||||||
|
<text x="421" y="301">test_order</text>
|
||||||
|
<!-- scope name -->
|
||||||
|
<defs>
|
||||||
|
<path d="M 331,266 A 90 90 0 0 1 511 266" id="testTwo"/>
|
||||||
|
</defs>
|
||||||
|
<text class="class">
|
||||||
|
<textPath href="#testTwo" startOffset="50%">TestTwo</textPath>
|
||||||
|
</text>
|
||||||
|
<!-- scope order number -->
|
||||||
|
<mask id="testTwoOrderMask">
|
||||||
|
<rect x="0" y="0" width="100%" height="100%" fill="white"/>
|
||||||
|
<circle fill="black" stroke="white" stroke-width="2" r="100" cx="421" cy="266" />
|
||||||
|
</mask>
|
||||||
|
<circle class="module" r="15" cx="521" cy="266" mask="url(#testTwoOrderMask)"/>
|
||||||
|
<text class="module" x="521" y="266">1</text>
|
||||||
|
<!-- scope order number -->
|
||||||
|
<circle class="module" r="15" cx="546" cy="266" mask="url(#testMainOrderMask)"/>
|
||||||
|
<text class="module" x="546" y="266">2</text>
|
||||||
|
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="281" cy="396" />
|
||||||
|
<text x="281" y="396">outer</text>
|
||||||
|
<ellipse class="fixture" rx="50" ry="25" cx="281" cy="136" />
|
||||||
|
<text x="281" y="136">order</text>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.2 KiB |