• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

vEnhance / otis-web / 19411161315
94%

Build:
DEFAULT BRANCH: main
Ran 16 Nov 2025 07:55PM UTC
Jobs 1
Files 115
Run time 1370min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

16 Nov 2025 07:54PM UTC coverage: 34.498% (-57.4%) from 91.924%
19411161315

push

github

web-flow
ci: Update unit tests framework (#429)

* test: migrate from Django unittest to pytest-django

- Add pytest, pytest-django, and pytest-cov to dev dependencies
- Create standalone otisweb_testsuite package (split from evans_django_tools)
- Update all test and factory imports to use new package
- Add conftest.py for pytest-django configuration
- Configure pytest in pyproject.toml
- Fix wikihaxx/factories.py to use LazyAttribute for database access
- Update coverage.run omit to use new package path

This migration provides:
- Better failure output with context diffs
- Access to pytest fixture system
- Parallel testing support via pytest-xdist
- Plugin ecosystem (pytest-django, pytest-cov, etc.)
- Simpler test functions possible for new tests

All 156 tests pass (155 in full suite, 1 has test ordering dependency)

* test: add pytest fixtures and convert otisweb/tests.py as proof of concept

- Create OTISClient class with pytest-style convenience methods
- Add otis fixture in otisweb_testsuite/fixtures.py
- Register fixtures via pytest_plugins in conftest.py
- Convert otisweb/tests.py to pytest-style functions

The OTISClient provides same conveniences as EvanTestCase:
- otis.get_20x(), otis.post_30x(), etc.
- otis.login() with User/Model/string support
- otis.assert_has(), otis.assert_redirects()
- Automatic debug dumps on assertion failures

This demonstrates the migration path for remaining test files.

* test: convert all tests to pytest-style functions (WIP)

Convert all 156 test methods from class-based unittest style to pytest-style
functions using the new otis fixture. This is a work-in-progress migration
with 140 tests passing (90% success rate).

Changes:
- Convert all test classes to standalone @pytest.mark.django_db functions
- Replace self.assertXXX methods with otis.xxx fixture methods
- Convert setUpClass methods to pytest fixtures
- Add backward compatibility aliases to OTISClient (assert_response_20x, etc.)
- Fix get_redirects/post_redirec... (continued)

21 of 1100 branches covered (1.91%)

Branch coverage included in aggregate %.

369 of 3016 new or added lines in 24 files covered. (12.23%)

2152 existing lines in 47 files now uncovered.

3425 of 8889 relevant lines covered (38.53%)

0.39 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
6
50.0
-50.0% otisweb/tests.py
15
34.78
-65.22% tubes/tests.py
25
32.43
-67.57% mouse/tests.py
27
20.59
-79.41% suggestions/tests.py
36
26.53
-73.47% hanabi/tests.py
36
28.57
-71.43% wikihaxx/tests.py
85
21.24
-76.84% arch/tests.py
98
17.74
-82.26% exams/tests.py
111
21.66
-76.26% payments/tests.py
114
26.83
-73.17% core/tests.py
222
12.84
-87.16% opal/tests.py
242
18.33
-81.67% markets/tests.py
249
17.68
-80.04% aincrad/tests.py
304
10.69
-89.31% rpg/tests.py
441
11.44
-88.56% dashboard/tests.py
636
10.25
-89.75% roster/tests.py

Uncovered Existing Lines

Lines Coverage ∆ File
1
17.68
-80.04% aincrad/tests.py
1
10.69
-89.31% rpg/tests.py
1
92.0
-4.0% suggestions/models.py
2
66.67
-20.0% otisweb/utils.py
2
92.0
-8.0% wikihaxx/factories.py
3
18.33
-81.67% markets/tests.py
4
86.21
-13.79% dashboard/forms.py
4
50.0
-12.5% tubes/views.py
5
85.71
-14.29% exams/factories.py
5
68.97
-31.03% otisweb/decorators.py
6
79.49
-20.51% arch/factories.py
7
78.16
-11.49% payments/models.py
10
76.47
-9.24% core/models.py
10
10.25
-89.75% roster/tests.py
10
73.27
-11.88% rpg/models.py
11
76.71
-23.29% core/factories.py
11
25.93
-55.56% otisweb/forms.py
12
36.0
-64.0% core/middleware.py
12
64.71
-35.29% dashboard/utils.py
13
75.61
-15.85% hanabi/models.py
13
51.85
-48.15% wikihaxx/views.py
14
78.64
-13.59% dashboard/models.py
15
25.0
-56.25% core/utils.py
17
48.1
-27.85% hanabi/views.py
19
55.42
-33.73% arch/models.py
22
60.91
-26.36% exams/models.py
26
24.64
-56.52% roster/utils.py
29
48.65
-48.65% core/templatetags/otis_extras.py
29
61.73
-38.27% roster/forms.py
30
70.49
-29.51% opal/models.py
32
51.19
-45.24% suggestions/views.py
37
17.72
-73.42% mouse/views.py
38
53.85
-40.0% markets/models.py
54
14.58
-73.96% exams/calculator.py
57
15.38
-73.08% wikihaxx/mdx/otis.py
68
11.81
-85.04% exams/views.py
72
35.96
-39.91% payments/views.py
81
22.18
-41.94% opal/views.py
86
49.0
-47.5% arch/views.py
92
31.02
-56.33% core/views.py
102
34.3
-51.24% rpg/views.py
104
33.07
-55.38% markets/views.py
117
45.28
-43.4% roster/models.py
144
28.21
-59.29% rpg/levelsys.py
193
18.76
-59.79% aincrad/views.py
209
21.79
-69.49% dashboard/views.py
322
16.64
-74.26% roster/views.py
Jobs
ID Job ID Ran Files Coverage
1 19411161315.1 16 Nov 2025 07:55PM UTC 115
34.5
GitHub Action Run
Source Files on build 19411161315
  • Tree
  • List 115
  • Changed 59
  • Source Changed 0
  • Coverage Changed 59
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 9481890b on github
  • Prev Build on main (#19409162335)
  • Next Build on main (#19411405246)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc