简化 Autocal 界面测试并减少等待开销
用轻量曲面和独立页面验证普通交互,收拢窗口清理,并让后台测试任务获得执行时间。保留原有 90 项用例,113 项相关测试及代码检查通过。
This commit is contained in:
@@ -19,6 +19,22 @@ def _csv(path, rows):
|
||||
writer.writerows(rows)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def review_dialog(qt_app):
|
||||
"""Give each test fresh dialogs and release their chart trees afterwards."""
|
||||
from orisys_autocal.ui.session_review_dialog import SessionReviewDialog
|
||||
|
||||
dialogs = []
|
||||
def create(directory, **kwargs):
|
||||
dialog = SessionReviewDialog(directory, **kwargs)
|
||||
dialogs.append(dialog)
|
||||
return dialog
|
||||
yield create
|
||||
for dialog in reversed(dialogs):
|
||||
dialog.close()
|
||||
dialog.deleteLater()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def session(tmp_path):
|
||||
manifest = {
|
||||
@@ -106,10 +122,8 @@ def test_review_refuses_mismatched_identity_and_paths_outside_session(session):
|
||||
review_session(session)
|
||||
|
||||
|
||||
def test_review_dialog_shows_saved_windows_charts_and_new_export(qt_app, session, tmp_path):
|
||||
from orisys_autocal.ui.session_review_dialog import SessionReviewDialog
|
||||
|
||||
dialog = SessionReviewDialog(session)
|
||||
def test_review_dialog_shows_saved_windows_charts_and_new_export(qt_app, session, tmp_path, review_dialog):
|
||||
dialog = review_dialog(session)
|
||||
assert dialog.sites.count() == 2
|
||||
assert dialog.table.rowCount() == 5
|
||||
assert dialog.pages.currentIndex() == 0 and dialog.pages.count() == 2
|
||||
@@ -127,7 +141,6 @@ def test_review_dialog_shows_saved_windows_charts_and_new_export(qt_app, session
|
||||
dialog.show()
|
||||
qt_app.processEvents()
|
||||
assert dialog.grab().save(str(tmp_path / "review.png"))
|
||||
dialog.close()
|
||||
|
||||
|
||||
def test_reviewed_windows_roundtrip_and_reject_changed_inputs(session):
|
||||
@@ -168,10 +181,10 @@ def test_invalid_review_selection_does_not_become_verified(session):
|
||||
}})
|
||||
|
||||
|
||||
def test_operator_confirms_windows_in_dialog_and_reloads_them(qt_app, session, monkeypatch):
|
||||
def test_operator_confirms_windows_in_dialog_and_reloads_them(session, monkeypatch, review_dialog):
|
||||
from orisys_autocal.ui import session_review_dialog
|
||||
|
||||
dialog = session_review_dialog.SessionReviewDialog(session)
|
||||
dialog = review_dialog(session)
|
||||
for row in (0, 1):
|
||||
dialog.table.selectRow(row)
|
||||
dialog.end_s.setValue(2)
|
||||
@@ -182,14 +195,12 @@ def test_operator_confirms_windows_in_dialog_and_reloads_them(qt_app, session, m
|
||||
dialog.save_button.click()
|
||||
wait_review(dialog)
|
||||
saved = next(session.glob("derived/*/review.json"))
|
||||
fresh = session_review_dialog.SessionReviewDialog(session)
|
||||
fresh = review_dialog(session)
|
||||
monkeypatch.setattr(session_review_dialog.QFileDialog, "getOpenFileName",
|
||||
lambda *args: (str(saved), ""))
|
||||
fresh.load_button.click()
|
||||
wait_review(fresh)
|
||||
assert fresh.review["sites"] == dialog.review["sites"]
|
||||
dialog.close()
|
||||
fresh.close()
|
||||
|
||||
|
||||
def test_baseline_image_matches_first_reviewed_zero_frame(session):
|
||||
@@ -301,15 +312,12 @@ def test_quality_ignores_unconfirmed_data_and_unmatched_loads(repeated_session):
|
||||
assert quality["hysteresis"] == []
|
||||
|
||||
|
||||
def test_quality_dialog_is_reachable_and_shows_validation_tables(qt_app, repeated_session, monkeypatch, tmp_path):
|
||||
def test_quality_dialog_is_reachable_and_shows_validation_tables(qt_app, repeated_session, monkeypatch, tmp_path, review_dialog):
|
||||
from PySide6.QtWidgets import QTableWidget
|
||||
from orisys_autocal.ui.session_review_dialog import SessionReviewDialog
|
||||
from orisys_autocal.ui.quality_review_dialog import QualityReviewDialog
|
||||
|
||||
directory, selections = repeated_session
|
||||
review = SessionReviewDialog(directory)
|
||||
review.review = review_session(directory, selections=selections)
|
||||
review._show_site()
|
||||
review = review_dialog(directory, review=review_session(directory, selections=selections))
|
||||
opened = []
|
||||
monkeypatch.setattr(QualityReviewDialog, "exec", lambda dialog: opened.append(dialog))
|
||||
review.quality_button.click()
|
||||
@@ -328,4 +336,3 @@ def test_quality_dialog_is_reachable_and_shows_validation_tables(qt_app, repeate
|
||||
qt_app.processEvents()
|
||||
assert dialog.grab().save(str(tmp_path / "validation.png"))
|
||||
dialog.close()
|
||||
review.close()
|
||||
|
||||
Reference in New Issue
Block a user