Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Extend & Unify Deserialization Testing #4635

Open
1 of 1 issue completed
Open
🧹 chore
1 of 1 issue completed
Labels
⚙️ bot-apiaffected functionality: bot-api⚙️ testsaffected functionality: tests
@Bibo-Joshi

Description

@Bibo-Joshi

This issue is a consequence of#4634 and#4617 (comment).

Currently, for each TO class we manually implementtest_de_json and some classes also implementtest_de_json_required andtest_de_json_localization. Personally I'm okay with the explicit repitition since automating tests across several classes can be error prone itself (see#4593 and also the convoluted logic inhttps://github.com/python-telegram-bot/python-telegram-bot/blob/v21.9/tests/auxil/bot_method_checks.py).
However, the findings above show that we should try to ensure that we test all uses cases in all classes, that being

  1. deserialization works if optional arguments are missing
  2. deserialization works if additional arguments are passed (backward compatibility for new arguments)
  3. To be discussed¹: deserialization works if required arguments are missing (forward compatibility for TG removing arguments)
  4. If required for that class: deserialization correctly localizes datetimes

I can see at least three options for ensuring that a test class tests all required use cases

  1. Introducing helper methods that do all that and calling them in the test classes. Adantvage: Less repetition. Disatvantage: Still need to ensure that the helper methods are called and also the downside of increased test complexity.
  2. Introduce abstract base class for TO-Class tests with abstract methodstest_de_json,test_de_json_required,test_de_json_locatization(?) and possibly others. This should force subclasses to implement all relevant tests. Advantage: Enforced unified setup without added test complexity. Disadvantage: Still need to check that the ABC is used. Could be done with a meta-test.
  3. Add a meta-test that checks simply that methods with the corresponding names exist. Advantage: Enforced unified setup without much added test complexity. Disadvantage: Less explicit than 2.

At first glance, I'm in favor of 2.

@harshil21@Poolitzer do you have any preferences?


¹ So far, Telegram has always made the removal of fields backward compatible (with the exception ofthumb back in2015), see

Of course, as per usual, Telegram doesn't document such things.

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    ⚙️ bot-apiaffected functionality: bot-api⚙️ testsaffected functionality: tests

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp